home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs49.d81
/
hack10c.sfx
/
issue10c
Wrap
Text File
|
1990-02-12
|
65KB
|
2,018 lines
**└╬OTE└THAT└WE└ARE└CURRENTLY└MAKING└A└MINOR└LEAP
**└OF└FAITH└THAT└NO└OVERFLOWS└WILL└OCCUR.
:├┴╠├┴ ├╠├
╠─╪ ╘1
╠─┴ ├╧╙,╪
╠─╪ ╘2
┴─├ ├╧╙,╪
╙╘┴ ┴11 ;┴=(COS(T1)+COS(T2))/2
:├┴╠├┬ ╠─╪ ╘1
╠─┴ ╙╔╬,╪
╙┼├
╠─╪ ╘2
╙┬├ ╙╔╬,╪
╙╘┴ ┬12 ;┬=(SIN(T1)-SIN(T2))/2
:├┴╠├├ ╠─╪ ╙┘
╠─┴ ╙╔╬,╪
>>> ═╒╠2
╙╘┴ ├13 ;├=SIN(SY)
:├┴╠├─ ╙┼├
╠─╪ ╘8
╠─┴ ├╧╙,╪
╠─╪ ╘7
╙┬├ ├╧╙,╪
╙┼├
╠─╪ ╘5
╙┬├ ├╧╙,╪
├╠├
╠─╪ ╘6
┴─├ ├╧╙,╪ ;─I=(COS(T8)-COS(T7)+COS(T6)-COS(T5))/2
>>> ─╔╓2
├╠├
╠─╪ ╘3
┴─├ ╙╔╬,╪
╙┼├
╠─╪ ╘4
╙┬├ ╙╔╬,╪
╙╘┴ ─21 ;─=(SIN(T3)-SIN(T4)+─I)/2
:├┴╠├┼ ╙┼├
╠─╪ ╘5
╠─┴ ╙╔╬,╪
╠─╪ ╘6
╙┬├ ╙╔╬,╪
╙┼├
╠─╪ ╘7
╙┬├ ╙╔╬,╪
╙┼├
╠─╪ ╘8
╙┬├ ╙╔╬,╪ ;┼I=(SIN(T5)-SIN(T6)-SIN(T7)-SIN(T8))/2
>>> ─╔╓2
├╠├
╠─╪ ╘3
┴─├ ├╧╙,╪
├╠├
╠─╪ ╘4
┴─├ ├╧╙,╪
╙╘┴ ┼22 ;┼=(COS(T3)+COS(T4)+┼I)/2
:├┴╠├╞ ╠─╪ ╘9
╠─┴ ╙╔╬,╪
╙┼├
╠─╪ ╘10
╙┬├ ╙╔╬,╪
╙╘┴ ╞23 ;╞=(SIN(T9)-SIN(T10))/2
:├┴╠├╟ ╠─╪ ╘6
╠─┴ ╙╔╬,╪
╙┼├
╠─╪ ╘8
╙┬├ ╙╔╬,╪
╙┼├
╠─╪ ╘7
╙┬├ ╙╔╬,╪
╙┼├
╠─╪ ╘5
╙┬├ ╙╔╬,╪ ;╟I=(SIN(T6)-SIN(T8)-SIN(T7)-SIN(T5))/2
>>> ─╔╓2
├╠├
╠─╪ ╘4
┴─├ ├╧╙,╪
╙┼├
╠─╪ ╘3
╙┬├ ├╧╙,╪
╙╘┴ ╟31 ;╟=(COS(T4)-COS(T3)+╟I)/2
:├┴╠├╚ ├╠├
╠─╪ ╘6
╠─┴ ├╧╙,╪
╠─╪ ╘7
┴─├ ├╧╙,╪
╙┼├
╠─╪ ╘5
╙┬├ ├╧╙,╪
╙┼├
╠─╪ ╘8
╙┬├ ├╧╙,╪ ;╚I=(COS(T6)+COS(T7)-COS(T5)-COS(T8))/2
>>> ─╔╓2
├╠├
╠─╪ ╘3
┴─├ ╙╔╬,╪
├╠├
╠─╪ ╘4
┴─├ ╙╔╬,╪
╙╘┴ ╚32 ;╚=(SIN(T3)+SIN(T4)+╚I)/2
:╫╚┼╫ ├╠├
╠─╪ ╘9
╠─┴ ├╧╙,╪
╠─╪ ╘10
┴─├ ├╧╙,╪
╙╘┴ ╔33 ;╔=(COS(T9)+COS(T10))/2
**└╔T'S└ALL└DOWNHILL└FROM└HERE.
─╧╫╬╚╔╠╠
****└├LEAR└BUFFER
*└┴└LITTLE└MACRO
╙┼╘┬╒╞ ═┴├ ;╨UT└BUFFERS└WHERE└THEY└CAN└BE└HURT
╠─┴ #00
╙╘┴ ┬╒╞╞┼╥
╠─┴ ┌╘┼═╨ ;╚IGH└BYTE
╙╘┴┬╒╞ ╙╘┴ ┬╒╞╞┼╥+1
<<<
>>> ╙┼╘┬╒╞
├╠╥─╥┴╫ ╠─╪ #08
╠─┴ #00
:╞╧╧╠ ╠─┘ #00
:─╧╨┼ ╙╘┴ (┬╒╞╞┼╥),┘
╔╬┘
┬╬┼ :─╧╨┼
╔╬├ ┬╒╞╞┼╥+1
─┼╪
┬╬┼ :╞╧╧╠
****└═Y└GOODNESS└BUT└╔'M└A└DOPE
*├╠╥─╥┴╫└╠─┴└╟╠╧┬╪═╔╬
*└╠╙╥└└;╬EED└TO└GET└INTO└THE└RIGHT└COLUMN
*└┬├├└:┼╓┼╬└;┼XPLAINED└IN└MORE└DETAIL└BELOW
*└╠─┘└#$80
*└╙╘┘└┬╒╞╞┼╥└;╨RESUMABLY└THIS└WILL└BE└A└LITTLE
*└├╠├└└;MORE└EFFICIENT.
*:┼╓┼╬└┴─├└┬╒╞╞┼╥+1
*└╙╘┴└┬╒╞╞┼╥+1
*└╠─┴└╟╠╧┬╪═┴╪
*└╙┼├
*└╙┬├└╟╠╧┬╪═╔╬
*└╘┴╪
*└╔╬╪
*└╠─┘└╟╠╧┬┘═┴╪
*└┬┼╤└:╥┼╙┼╘
*:┘┴┘└╠─┴└#$00
*└╠─┘└╟╠╧┬┘═┴╪
*:┬╠┴╚└╙╘┴└(┬╒╞╞┼╥),┘
*└─┼┘
*└├╨┘└╟╠╧┬┘═╔╬
*└┬├╙└:┬╠┴╚
*└╠─┴└┬╒╞╞┼╥
*└┼╧╥└#$80
*└╙╘┴└┬╒╞╞┼╥
*└┬╬┼└:╫╚╧╨┼┼
*└╔╬├└┬╒╞╞┼╥+1
*:╫╚╧╨┼┼└─┼╪
*└┬╬┼└:┘┴┘
*:╥┼╙┼╘└╠─┴└#0└;╬EED└TO└RESET└THESE└GUYS
*└╙╘┴└╟╠╧┬╪═┴╪
*└╙╘┴└╟╠╧┬┘═┴╪
*└╠─┴└#$╞╞
*└╙╘┴└╟╠╧┬╪═╔╬
*└╙╘┴└╟╠╧┬┘═╔╬
****└╬EXT,└READ└AND└DRAW└POLYGONS
╥┼┴──╥┴╫ ╠─┘ #00
╙╘┘ ╔╬─┼╪
╧┬╩╠╧╧╨ ╠─┘ ╔╬─┼╪
╠─┴ ╨╧╠┘╠╔╙╘,┘ ;╞IRST,└THE└NUMBER└OF└POINTS
┬╬┼ :├╧╬╘ ;┬UT└IF└NUMPOINTS└IS└ZERO└THEN
╩═╨ ╧┬╩─╧╬┼ ;WE└ARE└AT└THE└END└OF└THE└LIST
:├╧╬╘ ╙╘┴ ├╧╒╬╘╨╘╙
╔╬├ ╔╬─┼╪
*└╥OTATE└PROJECT└AND└DRAW└THE└POLYGON
*└═AKE└SURE└BUFFER└BEING└DRAWN└TO└IS└CLEAR!
:─╧╔╘ ╩╙╥ ╥╧╘╨╥╧╩
*└├ONVERT└XMIN└AND└XMAX└TO└COLUMNS
╠─┴ ╠╧├╪═╔╬
╠╙╥
╠╙╥
╠╙╥ ;X└MOD└8
╙╘┴ ╠╧├╪═╔╬
├═╨ ╟╠╧┬╪═╔╬
┬├╙ :╬┴╚
╙╘┴ ╟╠╧┬╪═╔╬
:╬┴╚ ╠─┴ ╠╧├┘═╔╬
├═╨ ╟╠╧┬┘═╔╬
┬├╙ :╒╚╒╚
╙╘┴ ╟╠╧┬┘═╔╬
:╒╚╒╚ ╠─┴ ╠╧├╪═┴╪
╠╙╥
╠╙╥
╠╙╥
╙╘┴ ╠╧├╪═┴╪
├═╨ ╟╠╧┬╪═┴╪
┬├├ :╬╧╫┴┘
╙╘┴ ╟╠╧┬╪═┴╪
:╬╧╫┴┘ ╠─┴ ╠╧├┘═┴╪
├═╨ ╟╠╧┬┘═┴╪
┬├├ ┼╧╥╞╔╠╠
╙╘┴ ╟╠╧┬┘═┴╪
*└╔F└USING└THE└┼╧╥-BUFFER,└COPY└INTO└DRAWING└BUFFER
*└┴ND└THEN└CLEAR└THE└┼╧╥-BUFFER
┼╧╥╞╔╠╠ ╠─┴ ╞╔╠╠
┬┼╤ ╧┬╩╠╧╧╨
>>> ╙┼╘┬╒╞
╠─┴ #<┼╧╥┬╒╞
╙╘┴ ╘┼═╨1
╠─┴ #>┼╧╥┬╒╞
╙╘┴ ╘┼═╨1+1
╠─┴ ╠╧├╪═╔╬ ;╠╧├╪═╔╬└NOW└CONTAINS└COLUMN
╠╙╥ ;┼ACH└COLUMN└IS└128└BYTES
┬├├ :┼╓┼╬ ;╙O└THERE└MIGHT└BE└A└CARRY
╠─┘ #$80
╙╘┘ ┬╒╞╞┼╥
╙╘┘ ╘┼═╨1
├╠├
:┼╓┼╬ ╙╘┴ ╘2
┴─├ ┬╒╞╞┼╥+1
╙╘┴ ┬╒╞╞┼╥+1 ;┼ACH└COLUMN└IS└128└BYTES
╠─┴ ╘2
┴─├ ╘┼═╨1+1 ;╬OW└WE└WILL└START└AT└THE
╙╘┴ ╘┼═╨1+1 ;COLUMN
╠─┴ ╠╧├╪═┴╪
╙┼├
╙┬├ ╠╧├╪═╔╬
╘┴╪ ;╘OTAL└NUMBER└OF└COLUMNS└TO└DO
╔╬╪ ;E.G.└FILL└COLUMNS└1..3
╠─┘ ╠╧├┘═┴╪
┬╬┼ :╞╧╧╨
╔╬├ ╠╧├┘═┴╪
:╞╧╧╨ ╠─┘ ╠╧├┘═┴╪
╠─┴ #00
:╟╧╧╨ ┼╧╥ (╘┼═╨1),┘ ;┼╧╥-BUFFER
╨╚┴
*└═AYBE└PUT└AN└┼╧╥└BELOW?
┼╧╥ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╠─┴ #00 ;═IGHT└AS└WELL└CLEAR└IT└NOW
╙╘┴ (╘┼═╨1),┘
╨╠┴
─┼┘
├╨┘ ╠╧├┘═╔╬
┬├╙ :╟╧╧╨
╠─┴ ┬╒╞╞┼╥
┼╧╥ #$80
╙╘┴ ┬╒╞╞┼╥
╙╘┴ ╘┼═╨1
┬╬┼ :┬╧╧╨
╔╬├ ┬╒╞╞┼╥+1
╔╬├ ╘┼═╨1+1
:┬╧╧╨ ─┼╪
┬╬┼ :╞╧╧╨
╩═╨ ╧┬╩╠╧╧╨
╧┬╩─╧╬┼
****└╙WAP└BUFFERS
╙╫┴╨┬╒╞ ╠─┴ ╓═├╙┬
┼╧╥ #$02 ;╨RETTY└TRICKY,└EH?
╙╘┴ ╓═├╙┬
╠─┴ #$08
┼╧╥ ┌╘┼═╨ ;ZTEMP=HIGH└BYTE└JUST└FLIPS
╙╘┴ ┌╘┼═╨ ;BETWEEN└$30└AND└$38
╩═╨ ═┴╔╬ ;┴ROUND└AND└AROUND└WE└GO...
╘╪╘ '╟EE└┬RAIN,└WHAT└DO└YOU└WANT└TO└DO└'
╘╪╘ 'TONIGHT?'
**└╥OTATE,└PROJECT,└AND└STORE└THE└POINTS
*
*└╘HIS└PART└IS└A└SIGNIFICANT└CHANGE└SINCE
*└V2.0.└└╬OW└IT└IS└A└COMPLETELY└GENERAL└POLYGON└PLOTTER.
*└┴└SET└OF└POINTS└IS└READ└IN,└ROTATED└AND└PROJECTED,└AND
*└PLOTTED└INTO└THE└DRAWING└BUFFER└(┼╧╥└OR└NORMAL).
╥╧╘╨╥╧╩
*└┴└NEAT└MACRO
╬┼╟ ═┴├ ;├HANGE└THE└SIGN└OF└A└TWO'S└COMPLEMENT
├╠├
╠─┴ ]1 ;NUMBER.
┼╧╥ #$╞╞
┴─├ #$01
<<<
*-------------------------------
*└╘HESE└MACROS└REPLACE└THE└PREVIOUS└PROJECTION
*└SUBROUTINE.
╙═╒╠╘└═┴├└;═ULTIPLY└TWO└SIGNED└8-BIT
;NUMBERS:└┴*┘/64└->└┴
╙╘┴└┌3
├╠├└└;╘HIS└MULTIPLY└IS└FOR└NORMAL
┼╧╥└#$╞╞└;NUMBERS,└I.E.└X=-64..64
┴─├└#$01
╙╘┴└┌4
╠─┴└(┌3),┘
╙┼├
╙┬├└(┌4),┘
<<<└└;┴LL└DONE└:)
╙═╒╠╘┌ ═┴├ ;═ULTIPLY└TWO└SIGNED└8-BIT
;NUMBERS:└┴*┘/64└->└┴
╙╘┴ ┌1
├╠├ ;┴ND└THIS└MULTIPLY└IS└SPECIFICALLY
┼╧╥ #$╞╞ ;FOR└THE└PROJECTION└PART,└WHERE
┴─├ #$01 ;NUMBERS└ARE└-110..110└AND└0..40
╙╘┴ ┌2
╠─┴ (┌1),┘
╙┼├
╙┬├ (┌2),┘
<<< ;┴LL└DONE└:)
╨╥╧╩┼├╘ ═┴├ ;╘HE└ACTUAL└PROJECTION└ROUTINE
;╘HE└ROUTINE└TAKES└THE└POINT
;]1└]2└]3,└ROTATES└AND
;PROJECTS└IT,└AND└STORES└THE
;RESULT└IN└]1└]2└]3.
╠─┘ ]1 ;═ULTIPLY└FIRST└ROTATION└COLUMN
╠─┴ ┴11
>>> ╙═╒╠╘
╙╘┴ ╨1╘
╠─┴ ─21
>>> ╙═╒╠╘
╙╘┴ ╨2╘
╠─┴ ╟31
>>> ╙═╒╠╘
╙╘┴ ╨3╘
╠─┘ ]2 ;╙ECOND└COLUMN
╠─┴ ┬12
>>> ╙═╒╠╘
├╠├
┴─├ ╨1╘
╙╘┴ ╨1╘
╠─┴ ┼22
>>> ╙═╒╠╘
├╠├
┴─├ ╨2╘
╙╘┴ ╨2╘
╠─┴ ╚32
>>> ╙═╒╠╘
├╠├
┴─├ ╨3╘
╙╘┴ ╨3╘
╠─┘ ]3 ;╘HIRD└COLUMN
╠─┴ ├13
>>> ╙═╒╠╘
├╠├
┴─├ ╨1╘
╙╘┴ ╨1╘
╠─┴ ╞23
>>> ╙═╒╠╘
├╠├
┴─├ ╨2╘
╙╘┴ ╨2╘
╠─┴ ╔33
>>> ╙═╒╠╘
├╠├
┴─├ ╨3╘
╙╘┴ ]3 ;╥OTATED└┌
╘┴╪
╠─┘ ┌─╔╓,╪ ;╘ABLE└OF└D/(Z+Z0)
;╬OW└┘└CONTAINS└PROJECTION└CONST
╠─┴ ╨1╘
>>> ╙═╒╠╘┌
╠─╪ ┌╧╧═
├╨╪ #64
┬┼╤ ├╧╬╘╪
╙╘┘ ╘┼═╨1
╠─┘ ┌╧╧═
>>> ╙═╒╠╘
╠─┘ ╘┼═╨1
├╧╬╘╪ ├╠├
┴─├ #64 ;╧FFSET└THE└COORDINATE
╙╘┴ ]1 ;╥OTATED└AND└PROJECTED
├═╨ ╠╧├╪═╔╬ ;╙EE└IF└IT└IS└A└LOCAL└MINIMUM
┬├╙ ╬╧╘╪═╔╬
╙╘┴ ╠╧├╪═╔╬
╬╧╘╪═╔╬ ├═╨ ╠╧├╪═┴╪
┬├├ ╬╧╘╪═┴╪
╙╘┴ ╠╧├╪═┴╪
╬╧╘╪═┴╪ ╠─┴ ╨2╘
>>> ╙═╒╠╘┌
├╨╪ #64
┬┼╤ ├╧╬╘┘
╠─┘ ┌╧╧═
>>> ╙═╒╠╘
├╧╬╘┘ ├╠├
┴─├ #64
╙╘┴ ]2 ;╥OTATED└AND└PROJECTED└┘
├═╨ ╠╧├┘═╔╬
┬├╙ ╬╧╘┘═╔╬
╙╘┴ ╠╧├┘═╔╬
╬╧╘┘═╔╬ ├═╨ ╠╧├┘═┴╪
┬├├ ╬╧╘┘═┴╪
╙╘┴ ╠╧├┘═┴╪
╬╧╘┘═┴╪ <<< ;┴LL└DONE
*└╠─┴└#<┼╧╥┬╒╞└;╞IRST└WE└NEED└TO└CLEAR└THE
*└╙╘┴└┬╒╞╞┼╥└;┼╧╥└BUFFER
*└╠─┴└#>┼╧╥┬╒╞
*└╙╘┴└┬╒╞╞┼╥+1
╠─┴ #0 ;╥ESET└┘MIN└AND└┘MAX
╙╘┴ ╠╧├┘═┴╪
╙╘┴ ╠╧├╪═┴╪
╠─┴ #$╞╞
╙╘┴ ╠╧├┘═╔╬
╙╘┴ ╠╧├╪═╔╬
╥┼┴─╨╘╙ ╠─┘ ╔╬─┼╪
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨1╪
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨1┘
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨1┌
╔╬┘
─┼├ ├╧╒╬╘╨╘╙
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨2╪
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨2┘
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨2┌
╔╬┘
─┼├ ├╧╒╬╘╨╘╙
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨3╪
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨3┘
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨3┌
╔╬┘
╙╘┘ ╔╬─┼╪
>>> ╨╥╧╩┼├╘,╨1╪;╨1┘;╨1┌
>>> ╨╥╧╩┼├╘,╨2╪;╨2┘;╨2┌
>>> ╨╥╧╩┼├╘,╨3╪;╨3┘;╨3┌
╠─┴ ╚╔─┼
┬┼╤ :─╧╔╘
╠─┴ ╨2╪ ;╚IDDEN└FACE└CHECK
╙┼├
╙┬├ ╨1╪
╘┴┘ ;┘=(X2-X1)
╠─┴ ╨3┘
╙┼├
╙┬├ ╨2┘ ;┴=(Y3-Y2)
>>> ╙═╒╠╘
╙╘┴ ╘┼═╨1
╠─┴ ╨3╪
╙┼├
╙┬├ ╨2╪
╘┴┘
╠─┴ ╨2┘
╙┼├
╙┬├ ╨1┘
>>> ╙═╒╠╘
├═╨ ╘┼═╨1 ;╔F└X1*Y2-Y1*X2└>└0└THEN└FACE
┬═╔ :─╧╔╘ ;IS└VISIBLE
─┼├ ├╧╒╬╘╨╘╙ ;╧THERWISE└READ└IN└REMAINING
┬┼╤ :┴┬╧╥╘ ;POINTS└AND└RETURN
:╨╧╧╨ ╔╬├ ╔╬─┼╪
╔╬├ ╔╬─┼╪
╔╬├ ╔╬─┼╪
─┼├ ├╧╒╬╘╨╘╙
┬╬┼ :╨╧╧╨
:┴┬╧╥╘ ╥╘╙
:─╧╔╘ ╠─┴ ╨1╪
╙╘┴ ╪1
╠─┴ ╨1┘
╙╘┴ ┘1
╠─┴ ╨2╪
╙╘┴ ╪2
╠─┴ ╨2┘
╙╘┴ ┘2
╩╙╥ ─╥┴╫
╠─┴ ╨2╪
╙╘┴ ╪1
╠─┴ ╨2┘
╙╘┴ ┘1
╠─┴ ╨3╪
╙╘┴ ╪2
╠─┴ ╨3┘
╙╘┴ ┘2
╩╙╥ ─╥┴╫
─┼├ ├╧╒╬╘╨╘╙
┬╬┼ ╨╧╠┘╠╧╧╨ ;╔S└IT└JUST└A└TRIANGLE?
╩═╨ ╨╧╠┘─╧╬┼
╨╧╠┘╠╧╧╨ ╠─┘ ╔╬─┼╪
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨2╪
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨2┘
╔╬┘
╠─┴ ╨╧╠┘╠╔╙╘,┘
╙╘┴ ╨2┌
╔╬┘
╙╘┘ ╔╬─┼╪
>>> ╨╥╧╩┼├╘,╨2╪;╨2┘;╨2┌
╠─┴ ╨2╪
╙╘┴ ╪1
╠─┴ ╨2┘
╙╘┴ ┘1
╠─┴ ╨3╪
╙╘┴ ╪2
╠─┴ ╨3┘
╙╘┴ ┘2
╩╙╥ ─╥┴╫
╠─┴ ╨2╪
╙╘┴ ╨3╪
╠─┴ ╨2┘
╙╘┴ ╨3┘
─┼├ ├╧╒╬╘╨╘╙
┬┼╤ ╨╧╠┘─╧╬┼
╩═╨ ╨╧╠┘╠╧╧╨
╨╧╠┘─╧╬┼ ╠─┴ ╨1╪ ;├LOSE└THE└POLYGON
╙╘┴ ╪2
╠─┴ ╨1┘
╙╘┴ ┘2
╠─┴ ╨3╪
╙╘┴ ╪1
╠─┴ ╨3┘
╙╘┴ ┘1
╩╙╥ ─╥┴╫
╥╘╙
╘╪╘ '╙AME└THING└WE└DO└EVERY└NIGHT,└╨INKY:└'
╘╪╘ 'TRY└TO└TAKE└OVER└THE└WORLD!'
*-------------------------------
*└╟ENERAL└QUESTIONABLE-VALUE└ERROR└PROCEDURE
*├╚╧╦┼└╠─╪└#00
*:╠╧╧╨└╠─┴└:├╘┼╪╘,╪
*└┬┼╤└:─╧╬┼
*└╩╙╥└├╚╥╧╒╘
*└╔╬╪
*└╩═╨└:╠╧╧╨
*:─╧╬┼└╥╘╙
*:├╘┼╪╘└╚┼╪└0─└;├╥
*└╘╪╘└'SOMETHING└CHOKED└:('
*└╚┼╪└0─00
*
╘╪╘ '╬ARF!'
*-------------------------------
*└─RAWIN'└A└LINE.└└┴└FAHN└LAHN.
***└╙OME└USEFUL└MACROS
├╔╬╔╘ ═┴├ ;═ACRO└TO└INITIALIZE└THE└COUNTER
╠─┴ ]1 ;DX└OR└DY
╠╙╥
<<< ;╘HE└DX/2└MAKES└A└NICER└LOOKING└LINE
*****└═ACRO└TO└TAKE└A└STEP└IN└╪
╪╙╘┼╨ ═┴├
╠─╪ ─╪ ;╬UMBER└OF└LOOP└ITERATIONS
>>> ├╔╬╔╘,─╪
╪╠╧╧╨ ╠╙╥ ├╚╒╬╦
┬┼╤ ╞╔╪├ ;╒PDATE└COLUMN
╙┬├ ─┘
┬├├ ╞╔╪┘ ;╘IME└TO└STEP└IN└┘
─┼╪
┬╬┼ ╪╠╧╧╨
─╧╬┼ ╠─┴ ╧╠─╪ ;╨LOT└THE└LAST└CHUNK
┼╧╥ ├╚╒╬╦
╧╥┴ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╥╘╙
╞╔╪├ ╨╚┴
╠─┴ ╧╠─╪
╧╥┴ (┬╒╞╞┼╥),┘ ;╨LOT
╙╘┴ (┬╒╞╞┼╥),┘
╠─┴ #$╞╞ ;╒PDATE└CHUNK
╙╘┴ ╧╠─╪
╙╘┴ ├╚╒╬╦
╠─┴ #$80 ;╔NCREASE└THE└COLUMN
┼╧╥ ┬╒╞╞┼╥
╙╘┴ ┬╒╞╞┼╥
┬╬┼ ├2
╔╬├ ┬╒╞╞┼╥+1
├2
╨╠┴
╙┬├ ─┘
┬├╙ ├╧╬╘
┴─├ ─╪
╔╞ ╔,]1 ;─O└WE└USE└╔╬┘└OR└─┼┘?
╔╬┘
┼╠╙┼
─┼┘
╞╔╬
├╧╬╘ ─┼╪
┬╬┼ ╪╠╧╧╨
╩═╨ ─╧╬┼
╞╔╪┘ ┴─├ ─╪
╨╚┴
╠─┴ ╧╠─╪
┼╧╥ ├╚╒╬╦
╧╥┴ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╠─┴ ├╚╒╬╦
╙╘┴ ╧╠─╪
╨╠┴
╔╞ ╔,]1 ;╒PDATE└┘
╔╬┘
┼╠╙┼
─┼┘
╞╔╬
─┼╪
┬╬┼ ╪╠╧╧╨
╥╘╙
<<< ;┼ND└OF└═ACRO└XSTEP
*****└╘AKE└A└STEP└IN└┘
┘╙╘┼╨ ═┴├
╠─╪ ─┘ ;╬UMBER└OF└LOOP└ITERATIONS
┬┼╤ ─╧╬┼ ;╔F└DY=0└IT'S└JUST└A└POINT
>>> ├╔╬╔╘,─┘
╙┼├
┘╠╧╧╨ ╨╚┴
╠─┴ ╧╠─╪
╧╥┴ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╨╠┴
╔╞ ╔,]1
╔╬┘
┼╠╙┼
─┼┘
╞╔╬
╙┬├ ─╪
┬├├ ╞╔╪╪
─┼╪
┬╬┼ ┘╠╧╧╨
─╧╬┼ ╠─┴ ╧╠─╪
╧╥┴ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╥╘╙
╞╔╪╪ ┴─├ ─┘
╠╙╥ ╧╠─╪
╙┼├ ;╔MPORTANT!
┬┼╤ ╞╔╪├
─┼╪
┬╬┼ ┘╠╧╧╨
╩═╨ ─╧╬┼
╞╔╪├ ╨╚┴
╠─┴ #$80
╙╘┴ ╧╠─╪
┼╧╥ ┬╒╞╞┼╥
╙╘┴ ┬╒╞╞┼╥
┬╬┼ ├2
╔╬├ ┬╒╞╞┼╥+1
├2 ╨╠┴
─┼╪
┬╬┼ ┘╠╧╧╨
╩═╨ ─╧╬┼
<<< ;┼ND└OF└═ACRO└YSTEP
*└╘AKE└AN└X└STEP└IN└THE└┼╧╥└BUFFER
*└╘HE└SOLE└CHANGE└IS└TO└USE└┼╧╥└INSTEAD└OF└╧╥┴
┼╧╥╪╙╘┼╨ ═┴├
╠─╪ ─╪ ;╬UMBER└OF└LOOP└ITERATIONS
>>> ├╔╬╔╘,─╪
╪╠╧╧╨ ╠╙╥ ├╚╒╬╦
┬┼╤ ╞╔╪├ ;╒PDATE└COLUMN
╙┬├ ─┘
┬├├ ╞╔╪┘ ;╘IME└TO└STEP└IN└┘
─┼╪
┬╬┼ ╪╠╧╧╨
─╧╬┼ ╠─┴ ╧╠─╪ ;╨LOT└THE└LAST└CHUNK
┼╧╥ ├╚╒╬╦
┼╧╥ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╥╘╙
╞╔╪├ ╨╚┴
╠─┴ ╧╠─╪
┼╧╥ (┬╒╞╞┼╥),┘ ;╨LOT
╙╘┴ (┬╒╞╞┼╥),┘
╠─┴ #$╞╞ ;╒PDATE└CHUNK
╙╘┴ ╧╠─╪
╙╘┴ ├╚╒╬╦
╠─┴ #$80 ;╔NCREASE└THE└COLUMN
┼╧╥ ┬╒╞╞┼╥
╙╘┴ ┬╒╞╞┼╥
┬╬┼ ├2
╔╬├ ┬╒╞╞┼╥+1
├2
╨╠┴
╙┬├ ─┘
┬├╙ ├╧╬╘
┴─├ ─╪
╔╞ ╔,]1 ;─O└WE└USE└╔╬┘└OR└─┼┘?
╔╬┘
┼╠╙┼
─┼┘
╞╔╬
├╧╬╘ ─┼╪
┬╬┼ ╪╠╧╧╨
╩═╨ ─╧╬┼
╞╔╪┘ ┴─├ ─╪
╨╚┴
╠─┴ ╧╠─╪
┼╧╥ ├╚╒╬╦
┼╧╥ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╠─┴ ├╚╒╬╦
╙╘┴ ╧╠─╪
╨╠┴
╔╞ ╔,]1 ;╒PDATE└┘
╔╬┘
┼╠╙┼
─┼┘
╞╔╬
─┼╪
┬╬┼ ╪╠╧╧╨
╥╘╙
<<< ;┼ND└OF└═ACRO└XSTEP
*└╘AKE└A└Y-STEP└IN└THE└┼╧╥-BUFFER
*└├HANGES└FROM└ABOVE└ARE:└ONLY└PLOT└LAST└PART└OF└EACH
*└VERTICAL└CHUNK,└DON'T└PLOT└LAST└POINT,└PLOT└WITH└┼╧╥
┼╧╥┘╙╘┼╨ ═┴├
╠─╪ ─┘ ;╬UMBER└OF└LOOP└ITERATIONS
┬┼╤ ─╧╬┼ ;╔F└DY=0└IT'S└JUST└A└POINT
>>> ├╔╬╔╘,─┘
╙┼├
*┘╠╧╧╨└╨╚┴
*└╠─┴└╧╠─╪
*└╧╥┴└(┬╒╞╞┼╥),┘
*└╙╘┴└(┬╒╞╞┼╥),┘
*└╨╠┴
┘╠╧╧╨ ╔╞ ╔,]1
╔╬┘
┼╠╙┼
─┼┘
╞╔╬
╙┬├ ─╪
┬├├ ╞╔╪╪
─┼╪
┬╬┼ ┘╠╧╧╨
*─╧╬┼└╠─┴└╧╠─╪
*└╧╥┴└(┬╒╞╞┼╥),┘
*└╙╘┴└(┬╒╞╞┼╥),┘
─╧╬┼ ╥╘╙
╞╔╪╪ ┴─├ ─┘
╨╚┴ ;╫E└ONLY└PLOT└THE└LAST└PART└OF└EACH└CHUNK
╠─┴ ╧╠─╪
┼╧╥ (┬╒╞╞┼╥),┘
╙╘┴ (┬╒╞╞┼╥),┘
╨╠┴
╠╙╥ ╧╠─╪
╙┼├ ;╔MPORTANT!
┬┼╤ ╞╔╪├
─┼╪
┬╬┼ ┘╠╧╧╨
╩═╨ ─╧╬┼
╞╔╪├ ╨╚┴
╠─┴ #$80
╙╘┴ ╧╠─╪
┼╧╥ ┬╒╞╞┼╥
╙╘┴ ┬╒╞╞┼╥
┬╬┼ ├2
╔╬├ ┬╒╞╞┼╥+1
├2 ╨╠┴
─┼╪
┬╬┼ ┘╠╧╧╨
╩═╨ ─╧╬┼
<<< ;┼ND└OF└═ACRO└YSTEP
****└╔NITIAL└LINE└SETUP
**└╘HE└COMMENTED└LINES└BELOW└ARE└NOW└TAKEN└CARE└OF└BY└THE
**└CALLING└ROUTINE.
*─╥┴╫└>>>└═╧╓┼,╘╪1;╪1└└;═OVE└STUFF└INTO└ZERO└PAGE
*└>>>└═╧╓┼,╘╪2;╪2└└;╫HERE└IT└CAN└BE└MODIFIED
*└>>>└═╧╓┼,╘┘1;┘1
*└>>>└═╧╓┼,╘┘2;┘2
─╥┴╫ ╠─┴ ╞╔╠╠
┬╬┼ :╙┼╘┼╧╥
>>> ╙┼╘┬╒╞
╩═╨ :╙┼╘╒╨
:╙┼╘┼╧╥ ╠─┴ #<┼╧╥┬╒╞ ;╒SE└┼╧╥└BUFFER└INSTEAD└OF
╙╘┴ ┬╒╞╞┼╥ ;DISPLAY└BUFFER└FOR└DRAWING
╠─┴ #>┼╧╥┬╒╞
╙╘┴ ┬╒╞╞┼╥+1
:╙┼╘╒╨ ╙┼├ ;═AKE└SURE└X1<X2
╠─┴ ╪2
╙┬├ ╪1
┬├╙ :├╧╬╘
╠─┴ ┘2 ;╔F└NOT,└SWAP└╨1└AND└╨2
╠─┘ ┘1
╙╘┴ ┘1
╙╘┘ ┘2
╠─┴ ╪1
╠─┘ ╪2
╙╘┘ ╪1
╙╘┴ ╪2
╙┼├
╙┬├ ╪1 ;╬OW└┴=DX
:├╧╬╘ ╙╘┴ ─╪
╠─╪ ╪1 ;╨UT└X1└INTO└╪,└NOW└WE└CAN└TRASH└╪1
├╧╠╒═╬ ╘╪┴ ;╞IND└THE└FIRST└COLUMN└FOR└╪
╠╙╥
╠╙╥ ;╘HERE└ARE└X1/8└128└BYTE└BLOCKS
╠╙╥ ;╫HICH└MEANS└X1/16└256└BYTE└BLOCKS
╠╙╥
┬├├ :┼╓┼╬ ;╫ITH└A└POSSIBLE└EXTRA└128└BYTE└BLOCK
╠─┘ #$80 ;IF└SO,└SET└THE└HIGH└BIT
╙╘┘ ┬╒╞╞┼╥
├╠├
:┼╓┼╬ ┴─├ ┬╒╞╞┼╥+1 ;┴DD└IN└THE└NUMBER└OF└256└BYTE└BLOCKS
╙╘┴ ┬╒╞╞┼╥+1
╙┼├
╠─┴ ┘2 ;├ALCULATE└DY
╙┬├ ┘1
┬├╙ :├╧╬╘2 ;╔S└Y2>Y1?
┼╧╥ #$╞╞ ;╧THERWISE└DY=Y1-Y2
┴─├ #$01
:├╧╬╘2 ╙╘┴ ─┘
├═╨ ─╪ ;╫HO'S└BIGGER:└DY└OR└DX?
┬├├ ╙╘┼╨╔╬╪ ;╔F└DX,└THEN...
╩═╨ ╙╘┼╨╔╬┘
╙╘┼╨╔╬╪ ╠─┘ ┘1
├╨┘ ┘2
╠─┴ ┬╔╘╨,╪ ;╪└CURRENTLY└CONTAINS└X1
╙╘┴ ╧╠─╪
╙╘┴ ├╚╒╬╦
┬├├ ╪╔╬├┘ ;─O└WE└STEP└FORWARDS└OR└BACKWARDS└IN└┘?
╩═╨ ╪─┼├┘
╪╔╬├┘ ╠─┴ ╞╔╠╠
┬┼╤ ╬╧╥═╪╔╬├
>>> ┼╧╥╪╙╘┼╨,╔╬┘
╬╧╥═╪╔╬├ >>> ╪╙╘┼╨,╔╬┘
╪─┼├┘ ╠─┴ ╞╔╠╠
┬┼╤ ╬╧╥═╪─┼├
>>> ┼╧╥╪╙╘┼╨,─┼┘
╬╧╥═╪─┼├ >>> ╪╙╘┼╨,─┼┘
╙╘┼╨╔╬┘ ╠─┘ ┘1
╠─┴ ┬╔╘╨,╪ ;╪=X1
╙╘┴ ╧╠─╪
╠╙╥ ;┘└DOESN'T└USE└CHUNKS
┼╧╥ ╧╠─╪ ;╙O└WE└JUST└WANT└THE└BIT
╙╘┴ ╧╠─╪
├╨┘ ┘2
┬├╙ ┘─┼├┘
┘╔╬├┘ ╠─┴ ╞╔╠╠
┬┼╤ ╬╧╥═╔╬├
>>> ┼╧╥┘╙╘┼╨,╔╬┘
╬╧╥═╔╬├ >>> ┘╙╘┼╨,╔╬┘
┘─┼├┘ ╠─┴ ╞╔╠╠
┬┼╤ ╬╧╥═─┼├
>>> ┼╧╥┘╙╘┼╨,─┼┘
╬╧╥═─┼├ >>> ┘╙╘┼╨,─┼┘
*-------------------------------
*└├LEAN└UP
├╠┼┴╬╒╨ ╠─┴ ╓═├╙┬ ;╙WITCH└CHAR└ROM└BACK└IN
┴╬─ #%11110101 ;DEFAULT
╙╘┴ ╓═├╙┬
╥╘╙ ;BYE!
╘╪╘ 'SPINAL└CRACKER└'
╘╪╘ 'SLJ└6/95'
*-------------------------------
*└╙ET└UP└BIT└TABLE
─╙ ^ ;├LEAR└TO└END└OF└PAGE
;╙O└THAT└TABLES└START└ON└A└PAGE└BOUNDARY
┬╔╘╨ ╠╒╨ 16 ;128└┼NTRIES└FOR└╪
─╞┬ %11111111
─╞┬ %01111111
─╞┬ %00111111
─╞┬ %00011111
─╞┬ %00001111
─╞┬ %00000111
─╞┬ %00000011
─╞┬ %00000001
--^
╙╔╬ ;╘ABLE└OF└SINES,└120└BYTES
├╧╙ ┼╤╒ ╙╔╬+128 ;╘ABLE└OF└COSINES
;┬OTH└OF└THESE└TRIG└TABLES└ARE
;CURRENTLY└SET└UP└FROM└┬┴╙╔├
┌─╔╓ ┼╤╒ ├╧╙+128 ;─IVISION└TABLE
╘═┴╘╚1 ┼╤╒ ┌─╔╓+384 ;═ATH└TABLE└OF└F(X)=X*X/256
╘═┴╘╚2 ┼╤╒ ╘═┴╘╚1+512 ;╙ECOND└MATH└TABLE
╨╧╠┘╠╔╙╘ ┼╤╒ ╘═┴╘╚2+512 ;╠IST└OF└POLYGONS
========================================================================
╙ECOND ╙╔─ ├HIP ╔NSTALLATION
├OPYRIGHT 1988 ═ARK ┴. ─ICKENSON
╘HIS INFORMATION AND SOFTWARE IS ├╧╨┘╥╔╟╚╘┼─ AND MADE AVAILABLE ON A
╙╚┴╥┼╫┴╥┼ BASIS. ╘HIS FILE CAN BE FREELY COPIED AND DISTRIBUTED AS LONG
AS IT IS NOT ╙╧╠─. ╘HIS INFORMATION CANNOT BE USED TO CONSTRUCT AND SELL A
HARDWARE DEVICE WITHOUT RECEIVING PRIOR PERMISSION FROM THE AUTHOR. ╘HERE IS
NOT A SET FEE FOR THE USE OF THIS INFORMATION. ╩UST SEND IN WHATEVER YOU FEEL
THE INFORMATION IS WORTH.
╔F YOU HAVE ANY GRIPES, COMPLAINTS, SUGGESTIONS, ├╧═╨╠╔═┼╬╘╙ OR ─╧╬┴╘╔╧╬╙ OF
ANY SORT PLEASE SEND THEM TO:
═ARK ─ICKENSON
600 ╙OUTH ╫EST ╙TREET
╬EVADA, ═ISSOURI 64772
┴DDING AN EXTRA ╙╔─ 6581/6582 CHIP
╘HIS IS NOT A PROJECT TO BE TACKLED BY THE SQEAMISH OR PEOPLE WHO ARE DEATHLY
AFRAID OF OPENING THEIR COMPUTER JUST TO TAKE A PEEK INSIDE.
╬OW LET'S GET RID OF THE NASTY STUFF FIRST. ╬O LIABILITY IS ASSUMED WITH
RESPECT TO THE USE OF THE FOLLOWING INFORMATION. ╔N OTHER WORDS IF YOU
SCREW-UP TRYING TO INSTALL THIS MODIFICATION, THEN IT'S YOUR RESPONSABILITY.
┘╧╒ ─╧ ╘╚╔╙ ┴╘ ┘╧╒╥ ╧╫╬ ╥╔╙╦!!!!
╔F YOU DO NOT FEEL UP TO IT ╨╠┼┴╙┼ TAKE IT TO A ├OMMODORE REPAIR CENTER
OR A REPAIR SERVICE THAT CAN WORK ON COMPUTERS AND LET THEM DO THE
INSTALLATION. ╔ WILL WARN YOU THAT MOST ├OMMODORE ╥EPAIR ├ENTERS WILL NOT OR
DO NOT LIKE TO DO THIS MODIFICATION. ╫HEN THEY DO, IT CAN BE EXPENSIVE. ╔F
YOU BELONG TO A ╒SERS ╟ROUP, TELL THEM ABOUT THE PROJECT AND ASK IF THERE IS
ANYONE THERE THAT COULD PERFORM THE OPERATION. ╘HIS MODIFICATION WILL ╬╧╘
HURT THE COMPUTER IN ANY WAY, UNLESS IT IS INSTALLED ╫╥╧╬╟.
┘OU CAN MAKE YOUR OWN PIGGY BACK BOARD OR YOU CAN DO WHAT ╔ AM GOING TO
DESCRIBE (SINCE IT IS A LITTLE HARD TO PUT A SCHEMATIC IN A TEXT FILE).
┘OU SHOULD GROUND YOURSELF WITH A STATIC GUARD WRISTBAND (SUCH AS WHAT
╥ADIO ╙HACK SELLS). ┼VEN THOUGH THE CHIP IS QUITE DURABLE, JUST THE RIGHT
STATIC DISCHARGE CAN RUIN ALL OR PART OF THE ╙╔─ CHIP.
╞OR THOSE OF YOU THAT ARE NOT FAMILIER WITH THE WAY PINS ARE NUMBERED ON AN
╔├ CHIP HERE IS A SHORT EXPLANATION. ╧N ONE END OF THE ╔├ YOU SHOULD FIND A
LITTLE NOTCH, LOOKING AT THE CHIP WITH THE NOTCH AT THE TOP THE NUMBERING GOES
THIS WAY. ╘HE UPPER LEFT CORNER OF THE CHIP IS PIN 1 AND THEY ARE NUMBERED
CONSECUTIVELY, COUNTER-CLOCKWISE AROUND THE CHIP. ╙OME CHIPS DO NOT HAVE A
NOTCH IN ONE END, BUT INSTEAD DOT IS PLACED IN ONE OF THE CHIP CORNERS TO
DESIGNATE THAT PIN 1 STARTS IN THAT LOCATION.
NOTCH
----,,----
1-!. !-8
2-! DOT !-7
3-! !-6
4-! !-5
----------
╔ HAVE INCLUDED THE INFORMATION THAT IS NEEDED TO INSTALL THIS MODIFICATION
ON THE ├OMMODORE 64, 64├ AND 128. ╔ HAVEN'T BEEN ABLE TO LOOK INSIDE THE
128─, SO ╔ CANNOT PROVIDE THE INFORMATION WITH ANY ACCURACY.
╘HERE ARE ╘╫╧ DIFFERENT 64├ CIRCUIT BOARDS AND BOTH USE ─╔╞╞┼╥┼╬╘ ╙╔─
CHIPS. ┘OU CAN TELL THE DIFFERENCE BY OPENING THE 64├. ╔F YOU SEE A 64-PIN
CHIP ON THE BOARD AND THE BOARD IS ONLY 5.5-6 INCHES WIDE THEN YOU HAVE THE
NARROW BOARD 64├ AND MUST USE THE 9 VOLT 6582 ╙╔─ CHIP. ╘HE NUMBER OF THE
CHIP IN THE 64├ NARROW IS AN 8520 AND IS THE SAME AS THE 6582.
----------------------------------
╨ARTS ├OMMODORE 64, 64├ (WIDE) & 128
1 - 6581 ╙╔─ CHIP FROM ╩AMCO OR ╦ASSARA ═ICROSYSTEMS
1 - 2╬2222 TRANSISTOR ╥ADIO ╙HACK 276-1617
2 - 220PF CAPACITORS ╥ADIO ╙HACK 272-124
-----------------------------------
╨ARTS ├OMMODORE 64├ ╬ARROW ┬OARD
1 - 6582 ╙╔─ ├HIP ╞ROM ╩AMCO OR ╦ASSARA ═ICROSYSTEMS
1 - 2222┴ TRANSISTOR ╥ADIO ╙HACK 276-2009
2 - .022UF CAPACITORS ╥ADIO ╙HACK 272-1066
2 - 1K OHM 1/4 WATT RESISTORS ╥ADIO ╙HACK 271-1321
-----------------------------------
╨ARTS 64, 64├ (ALL) & 128
2 - 1K OHM 1/4 WATT RESISTORS ╥ADIO ╙HACK 271-1321
1 - 1000 PF CAPACITOR ╥ADIO ╙HACK 272-126 LISTED AS .001 MF THIS IS
THE SAME AS 1000PF
1 - 10K OHM 1/4 WATT RESISTOR ╥ADIO ╙HACK 271-1335
1 - 10 UF ELECTROLITIC CAPACITOR ╥ADIO ╙HACK 272-1025
1 - 5 INCH LENGTH OF WIRE
1 - 5 INCH LENGTH OF SHIELDED CABLE
1 - SURFACE MOUNT FEMALE ╥├┴ PLUG (THIS IS WHAT YOU NORMALLY FIND ON THE BACK
OF YOUR STEREO.
╧N THE ├-64 AND 64├ (WIDE) THE ╙╔─ IS ╔├ ╒18 (THE ╔├ NUMBER WILL BE MARKED IN
WHITE ON THE CIRCUIT BOARD). ╔T IS USUALLY LOCATED IN THE MIDDLE OF THE
CIRCUIT BOARD, NEXT TO THE METAL VIDEO CHIP CASE OR UP BETWEEN AND JUST
BELOW THE SERIAL AND MONITOR JACKS.
╧N THE ├-64├ (NARROW BOARD) THE ╙╔─ CHIP IS ╔├ ╒9. ╔T IS LOCATED IN THE
MIDDLE OF THE BOARD, JUST A LITTLE TO THE RIGHT OF CENTER) AND CALLED 520.
╧N THE ├-128 THE ╙╔─ IS ╔├ ╒5. ╔T IS LOCATED AT THE BACK OF THE CIRCUIT
BOARD JUST TO THE RIGHT OF THE METAL HOUSING FOR THE 40 AND 80 COLUMN VIDEO
CHIPS.
╞IRST BEND OUT PINS 23, 24 AND 26 AND CUT THEM OFF OF THE 6581/6582 ╙╔─
CHIP. ╘HESE ARE FOR THE TWO ANALOG AND ONE AUDIO INPUT LINES. ╘HEY WILL
CAUSE PROBLEMS IF CONNECTED AND SINCE THEY WILL NOT BE USED IT IS BEST TO
REMOVE THEM.
╬OW BEND OUT PINS 1, 2, 3, 4, 8, AND 27.
╙OLDER ONE OF THE 220PF CAPACITORS (64├ NARROW USES .022 UF) TO PINS 1
AND 2 THEN SOLDER THE OTHER 220PF (64├ NARROW - .022UF) CAPACITOR TO PINS 3
AND 4. ╘HE CAPACITORS CONTROL THE UPPER AND LOWER FREQUENCY RANGE AND
FILTERS OF THE ╙╔─ CHIP.
╘HE REASON ╔ AM USING 220PF CAPACITORS IS BECAUSE OF PROBLEMS WITH THE
FILTERS IN THE ╙╔─ CHIP. ╘HE ├-64 FIRST CAME OUT WITH 2200PF CAPACITORS, BUT
THEY WERE CHANGED TO 470PF. ╘HE REASON FOR THIS WAS BECAUSE THE FILTERS OF
THE ╙╔─ VARY FROM CHIP TO CHIP AND USING 2200PF CAUSED A LOT OF THEM TO SOUND
MUFFELED WHEN THE FILTERS WERE ON. ╔ HAVE FOUND THAT BY LOWERING THE
CAPACITOR VALUE TO 220 PF HELPS EVEN MORE. ╔F YOU WISH, YOU CAN USE 470S IF
YOU FEEL IT WOULD BE BETTER, BUT ─╧ ╬╧╘ USE 2200PF.
╘HE 6582 ╙╔─ CHIP FOR THE 64├ NARROW MUST USE THE .022UF CAPACITORS, AS THE
FILTER RANGE IS MUCH DIFFERENT.
╙OLDER ONE END OF YOUR WIRE TO PIN 8 OF THE ╙╔─ CHIP. ╘HIS IS FOR THE CHIP
SELECT LINE. ╫E WILL CONNECT THIS TO THE CARTRIDGE PORT. ╘HIS TELLS THE
COMPUTER WHERE IN MEMORY THE CHIP RESIDES (DESCRIBED LATER).
╬OW SOLDER THE REMAINING PINS (EXCLUDING THE ONES WE HAVE BENT OUT
AND/OR REMOVED 1, 2, 3, 4, 8, 23, 24, 26 AND 27) TO THE SID CHIP CURRENTLY IN
YOUR COMPUTER. ┘OU MAY HAVE TO BEND THOSE PINS INWARD JUST A LITTLE FOR THEM
TO GET A GOOD GRIP ON THE ╙╔─ CHIP. ┬E VERY CAREFUL NOT LEAVE THE SOLDERING
IRON ON THE CHIP ╘╧╧ LONG AS YOU COULD RUIN ┬╧╘╚ ╙╔─ CHIPS. ╔ WOULD PUT SOME
HEAT SINK (SILICON GREASE) BETWEEN THE TWO CHIPS BEFORE SOLDERING THEM
TOGETHER. ╘HIS WILL PROVIDE BETTER HEAT DISPERSAL ON THE BOTTOM CHIP.
╬OW THAT YOU HAVE THE CHIPS SOLDERED TOGETHER (PLACE THE ╙╔─ CHIPS BACK IN
THE SOCKET IF YOU REMOVED THEM), SOLDER THE WIRE FROM PIN 8 (ON THE ╙╔─ CHIP)
TO PIN 7 OF THE CARTRIDGE PORT ON THE BACK OF THE COMPUTER. ╙ET THE COMPUTER
INFRONT OF YOU LIKE TO ARE GETTING READY TO TYPE, WITH THE BACK OF THE
COMPUTER AWAY FROM YOU. ╠OOK AT THE CARTRIDGE PORT (LOCATED IN THE UPPER
RIGHT CORNER OF THE CIRCUIT BOARD). ┘OU WILL SEE TWO ROWS OF PINS CONNECTING
THE CARTRIDGE PORT TO THE CIRCUIT BOARD. ┘OU WANT THE ROW OF PINS CLOSEST TO
THE FRONT OF THE COMPUTER. ╬OW, COUNT THE PINS STARTING AT THE ╠┼╞╘ SIDE AND
COUNTING TO THE RIGHT. ┘OU WANT TO SOLDER THE WIRE FROM PIN 8 OF THE EXTRA
╙╔─ CHIP TO PIN NUMBER 7 OF THE CARTRIDGE PORT. ╘HIS IS THE SAME PLACE ON ALL
OF THE MODELS ├-64, 64├ AND 128.
╘HIS WILL TELL THE COMPUTER THAT THE EXTRA ╙╔─ CHIP IS AT ADDRESS $─┼00 HEX
OR 56832 DECIMAL. ┘OU WILL ACCESS IT JUST LIKE YOU WOULD THE REGULAR SID
CHIP BUT STARTING AT THIS ADDRESS.
╔ AM NO LONGER DESCRIBING HOW TO CONNECT FOR ADDRESS $─╞00. ╘HIS
ADDRESS CAUSES PROBLEMS WITH THE ╥┴═ ┼XPANSION ╒NITS AND NUMEROUS OTHER
CARTRIDGES. ╞ROM NOW ON ADDRESS $─┼00 IS THE ╧╬╠┘ ADDRESS FOR THE ╙╔─ CHIP.
╬OW PARTIALLY REASSEMBLE YOUR COMPUTER (BE CAREFUL THAT NOTHING SHORTS OUT
THE PINS STILL STICKING OUT). ╘URN THE COMPUTER ON AND LOAD THE PLAYER
PROGRAM PROVIDED AND TELL IT TO LOAD IN '╘┼╙╘'. ╔F YOU GET SOUND THEN SO FAR
SO GOOD. ╘URN OFF THE COMPUTER AND DISASSEMBLE THE CASE.
─RILL A HOLE IN THE BACK END OF THE COMPUTER JUST LARGE ENOUGH TO ANCHOR
THE ╥├┴ PLUG. ╘HEN SOLDER THE CENTER WIRE OF THE SHIELDED CABLE TO THE
CENTER POST OF THE ╥├┴ PLUG. ╔NSERT THE WIRE THROUGH THE HOLE YOU HAVE
JUST DRILLED AND ANCHOR THE PLUG TO THE CASE. ╬OW SOLDER THE GROUND WIRE TO
THE GROUND TAB ON THE ╥├┴ PLUG.
╚ERE COMES THE DIFFICULT PART TO EXPLAIN. ╘HIS IS THE COUPLING CIRCUIT
FOR THE AUDIO OUTPUT. ╚ERE IS A ROUGH SCHEMATIC.
╨IN 27 ON 12VOLTS DC,
9VOLTS 64├ (NARROW)
╙╔─ CHIP RESISTOR
!--. 10K OHM !COLLECTOR
27!----.--/!/!/--.-----╧ 2N2222 OR 2222┴
--' ! ! !EMITTER
! ! !
<RESISTOR ! !
>1K ! ! +
===========================================================================
╙╧╠╓╔╬╟ ╠┴╥╟┼ ╙┘╙╘┼═╙ ╧╞ ╠╔╬┼┴╥ ┼╤╒┴╘╔╧╬╙ ╧╬ ┴ ├64 ╫╔╘╚╧╒╘ ═┼═╧╥┘
BY ┴LAN ╩ONES (ALAN.JONES@QCS.ORG)
╧╦, NOW THAT ╔ HAVE YOUR ATTENTION, ╔ LIED. ┘OU CAN'T SOLVE DENSE
LINEAR SYSTEMS OF EQUATIONS BY DIRECT METHODS WITHOUT USING MEMORY TO
STORE THE PROBLEM DATA. ╚OWEVER, ╔'LL COME BACK TO THIS MEMORY FREE
ASSERTION LATER. ╘HE MAIN PURPOSE OF THIS ARTICLE IS TO RESCUE A
USEFULL NUMERICAL ALGORITHM, "╤UARTERSOLVE", AND ALSO TO PROVIDE A BRIEF
LOOK AT THE ├╧═┴╠ PROGRAMMING LANGUAGE AND ┬╠┴╙ ROUTINES.
╠INEAR SYSTEMS OF EQUATIONS, ┴(,)*X()=B(), WHERE ┴ IS A SQUARE MATRIX
AND X AND B ARE VECTORS (OR ARRAYS), MUST OFTEN BE SOLVED FOR X IN THE
SOLUTION OF A VARIETY OF PROBLEMS. ╘HE SIZE OR DIMENSION OF THE PROBLEM
IS N AND JUST STORING ┴ REQUIRES 5*N*N BYTES OF MEMORY, ASSUMING ├64/128
5 BYTE REAL VARIABLES. ╘HE PREFERED SOLUTION METHOD IS A FORM OF
╟AUSSIAN ┼LIMINATION WHICH REQUIRES 1/3 N*N*N MULTIPLICATIONS. ╔'LL
IGNORE THE ADDITIONAL N*N AND N MULTIPLIES. ╞OR LARGE PROBLEMS OUR ├64
HAS TWO SERIOUS LIMITATIONS, SMALL MEMORY SIZE AND SLOW FLOATING POINT
ARITHMETIC. ╨ROBLEMS WITH N=10 CAN BE COMPUTED EASILY. ╨ROBLEMS WITH
N=100 WILL REQUIRE 100 TIMES MORE MEMORY AND 1000 TIMES MORE COMPUTING
TIME. ╘HE COMPUTING TIME IS NOT A REAL PROBLEM. ╔ DON'T MIND LETTING
MY COMPUTER RUN WHILE ╔ WATCH A MOVIE, SLEEP, OR GO ON A TRIP.
├ALCULATING OR SETTING UP THE PROBLEM MAY TAKE MUCH LONGER THAN ITS
SOLUTION ANYWAY. ┴VAILABLE MEMORY IS THE PRACTICAL LIMITING FACTOR.
┴FTER WE USE UP AVAILABLE ╥┴═ WE HAVE TO RESORT TO OTHER ALGORITHMS THAT
WILL USE THE DISK DRIVE TO MOVE DATA IN AND OUT OF THE COMPUTER. ╘HE
1541 DRIVE IS PARTICULARLY SLOW AND ╔ WOULD NOT WANT TO SUBJECT IT TO
UNDUE WEAR AND TEAR.
╚OW BIG A PROBLEM DO WE NEED TO BE ABLE TO SOLVE? ╔N MANY CASES THE
PROBLEM ITSELF WILL FIX N AND THERE IS NO WAY TO REDUCE IT. ╔N OTHER
CASES YOU MIGHT BE MODELING A REAL CONTINUOUS PROBLEM WITH A DISCRETE
NUMBER OF ELEMENTS. ╬ SHOULD BE INFINITY BUT FOR PROBLEM SOLUTION N=50
MIGHT BE BIG ENOUGH. ├ONSIDER CALCULATING THE AERODYNAMIC POTENTIAL
FLOWFIELD AROUND A BODY OF REVOLUTION. ┘OU COULD FIX POINTS ON THE
SURFACE OF THE BODY (A MERIDIAN) AND HAVE A SERIES OF SORT LINE SEGMENTS
MAKE UP ELEMENTS TO APPROXIMATE THE SHAPE. ╘HE LAGER N IS THE CLOSER
THE SMOOTH SHAPE IS APROXIMATED AND THE MORE ACCURATE THE COMPUTED
SOLUTION BECOMES. N=100 MIGHT BE A GOOD CHOICE FOR A SIMPLE SHAPE. ╫E
COULD ALSO USE A "HIGHER ORDER" MENTHOD. ╔N THIS CASE WE CAN SUBSTITUTE
A CURVED LINE ELEMENT FOR THE STRAIGHT LINE SEGMENT. ├ALCULATING THE
MATRIX ELEMENTS WILL BE MORE DIFFICULT BUT N=40 CURVED ELEMENTS MIGHT
GIVE A MORE ACCURATE SOLUTION THAN 100 FLAT ELEMENTS. ┴NOTHER
CONSIDERATION IS THE RESOLUTION OF THE SOLUTION. ┘OU MIGHT WANT TO PLOT
THE SOLUTION ON THE 200 X 320 PIXEL HI-RES ├64 SCREEN. 40 POINTS MIGHT
BE TOO COARSE AND 320 MIGHT BE OVERKILL. ╫E MIGHT ALSO NEED TO
CALCULATE THE SLOPE OR DERIVATIVES FROM THE CALCULATED SOLUTION WHICH
WILL REQUIRE MORE CLOSELY SPACED SOLUTION POINTS. ╘HERE ARE OFTEN
CHOICES THAT YOU CAN MAKE IN MODELING A SYSTEM AND SELECTING A SOLUTION
ALGORITHM SO THAT A PROBLEM CAN BE SOLVED WITHIN THE LIMITS OF A ├64.
╘HERE ARE OFTEN INTERESTING TRADEOFFS IN MEMORY REQUIREMENTS AND
EXECUTION SPEED.
╚OW BIG A PROBLEM CAN WE SOLVE WITH A ├64? ╒SING ╤UARTERSOLVE WITH
ASSEMBLY LANGUAGE WE CAN PROBABLY DO N=200 OR MORE. ╔F WE ARE GOING TO
STORE THE PROBLEM DATA ON A SINGLE 1541 DISKETTE AND READ IT IN A ROW AT
TIME WE CAN ONLY DO N=182 OR SO. ┴CTUALLY ╔ THINK N SHOULD BE WELL
UNDER 100. ─IFFERENT OPERATING SYSTEMS AND LANGUAGES LIMIT THE AMOUNT
OF USEABLE ╥┴═; ┬┴╙╔├ 40╦, ├╧═┴╠ 2.0 30╦, ╟┼╧╙ 23╦, THE INITIAL DISK
LOADED ├╧═┴╠ 0.14 10╦... ╙OLVING A LINEAR SYSTEM MAY ONLY BE A SMALL
SUBPROBLEM INSIDE A LARGE APPLICATION PROGRAM. ╘HE IDEA IS TO BE ABLE
TO SOLVE REASONABLE SIZED PROBLEMS USING YOUR PREFERED COMPUTING
ENVIRONMENT WITHOUT HAVING TO DO A LOT OF CHAINING OR LOADING OF
SEPARATE PROGRAMS. ╤UARTERSOLVE CAN FREE UP A LOT OF MEMORY FOR OTHER
ROUTINES OR ALLOW N TO BE DOUBLED.
╙╨┼┼─
╘HERE ARE A FEW THINGS THAT WE CAN DO TO SPEED UP THE CALCULATIONS.
╞IRST WE CAN SELECT A FAST PROGRAMMING LANGUAGE. ╔ PREFERE ├╧═┴╠ 2.0
WHICH IS A FAST THREE PASS INTERPRETER. ╒SING AN ASSEMBLER COULD BE THE
FASTEST AND PROVIDE THE MOST USEABLE MEMORY. ┴ TRUE COMPILER SUCH AS ├
OR ╨ASCAL COULD ALSO BE A GOOD CHOICE. ┬┴╙╔├ IS A POOR CHOICE EXCEPT
THAT IT IS BUILT IN AND FREE. ╔N MOST CASES EXECUTION CAN BE SPED UP
WITH SOME MACHINE LANGUAGE ROUTINES LIKE THE ┬╠┴╙ (┬ASIC ╠INEAR ┴LGEBRA
╙UBROUTINES). ├ALCULATION SPEED IS MEASURED IN ╞╠╧╨╙/SEC (╞LOATING
╨OINT ╧╨ERATION╙) WHERE, C(I#,J#):=C(I#,J#) + A(I#,K#)*B(K#,J#) IS THE
OPERATION. ╔T IS ONE ╞╨ MULTIPLY, ONE ╞╨ ADD, AND SOME INDEXING
OVERHEAD. ╫ITH SOME INTERPRETERS THE INDEXING AND INTERPRETING OVERHEAD
CAN FAR EXCEED THE ACTUAL ╞╨ MULTIPLY TIME. ╫ITH ASSEMBLED CODE THE ╞╨
MULTIPLY TIME SHOULD DOMINATE. ╔ USE A ═╠ LEVEL 1 ┬╠┴╙ PACKAGE WITH
├╧═┴╠ 2.0. ╞OR EXAMPLE:
C(I#,╩#):+SDOT(N#,A(I#,1),1,B(1,J#),SDB#)
╞╧╥ K#:=1 TO N# DO C(I#,J#):+A(I#,K#)*B(K#,J#)
BOTH CALCULATE THE SAME THING, A DOT PRODUCT WITH N# ╞╠╧╨╙. ╞OR LARGE
N# ON A ├64 THE ┬╠┴╙ APPROACH ABOUT 320 ╞╠╧╨╙/SEC., ╘HE OVERHEAD OF
CALLING THE PROCEDURE FROM THE INTERPRETER IS ABOUT THE EQUIVALENT OF 4
╞╠╧╨╙. ╧F COURSE MODERN COMPUTER PERFORMANCE IS MEASURED IN
═EGA╞╠╧╨╙/SEC. WITH 8 BYTE REALS (SUPER COMPUTERS RUN HUNDREDS OR
THOUSANDS OF ═╞╠╧╨╙/SEC.). ╘HEY ALSO INFLATE THE PERFORMANCE BY
COUNTING THE MULTIPLY AND ADD AS TWO ╞╠╧╨╙. ╔N HIS ARTICLE ╔ USE THE
"OLD FLOPS" OR NUMBER OF MULTIPLIES.
╔T MAY ALSO BE POSSIBLE TO CODE 6502 ╞╨ ARITHMETIC ROUTINES USING LOOKUP
TABLES THAT MAY PERFORM FASTER THAN THE BUILT IN ROUTINES. ╫E COULD
ALSO USE THE ├╨╒ IN THE DISK DRIVES TO DO DISTRIBUTED PROCESSING. ┬UT
THIS IS BEYOND THE SCOPE OF THIS ARTICLE.
╙╧╠╒╘╔╧╬ ═┼╘╚╧─╙
├ONSIDER THE FOLLOWING CHOICES FOR NUMERICAL SOLUTION ALGORITHMS:
═┼╘╚╧─ ═┼═╧╥┘ ╞╠╧╨╙
╟AUSSIAN ┼LIMINATION N*N 1/3 N*N*N
├HOLESKY ─ECOMPOSITION 1/2 N*N 1/6 N*N*N
╤╥ DECOMPOSITION N*N 2/3 N*N*N
╤╥ UPDATING 1/2 N*N 2 N*N*N
╟AUSS-╩ORDAN N*N 1/2 N*N*N
╤UARTERSOLVE 1/4 N*N 1/2 N*N*N
╟AUSSIAN ┼LIMINATION IS THE PREFERED METHOD WHEN ENOUGH MEMORY IS
AVAILABLE. ╔N MODERN TERMINOLOGY THIS IS ╠╒ DECOMPOSITION WHERE ┴ IS
DECOMPOSED OR FACTORED INTO A LOWER TRIANGULAR MATRIX AND AN UPPER
TRIANGULAR MATRIX. ╨ARTIAL PIVOTING OF ROWS OR COLUMNS IS AN ADDITIONAL
COMPLICATION OFTEN REQUIRED FOR A STABLE SOLUTION. ┴FTER THE ╠╒
DECOMPOSTION YOU CAN READILY SOLVE FOR ANY NUMBER OF RIGHT HAND SIDE
VECTORS IN N*N FLOPS EACH. ╔N ADDITION YOU CAN CALCULATE MATRIX
CONDITION NUMBER ESTIMATES AND USE ITERATIVE IMPROVEMENT TECHNIQUES.
╘HE ╠╒ DECOMPOSITION IS DONE IN PLACE OVERWRITING THE PROBLEM MATRIX ┴.
├HOLESKY ─ECOMPOSITION IS A SPECIALIZED VERSION OF ╟AUSSIAN ┼LIMINATION
FOR SYMETRIC POSITIVE DEFINITE MATRICES ONLY. ╙INCE ┴ IS SYMETRIC WE
ONLY NEED N*(N+1)/2 MEMORY STORAGE LOCATIONS. ╘HE ╠ AND ╒ TRIANGULAR
MATRICES ARE SIMPLY TRANSPOSES OF THE OTHER SO ONLY ONE NEEDS TO BE
STORED AND IS COMPUTED IN PLACE OVERWRITING THE ORIGINAL STORAGE USED
FOR ┴. ╬O PIVOTING IS REQUIRED. ╘HIS ALGORITHM CANNOT SOLVE GENERAL
NONSYMETRIC PROBLEMS AND IS INCLUDED ONLY FOR COMPARISON.
╤╥ DECOMPOSITION FACTORS ┴ INTO AN ORTHOGONAL MATRIX ╤ AND A TRIANGULAR
MATRIX ╥. ╤╥ DECOMPOSITION IS VERY STABLE AND CAN BE PERFORMED WITHOUT
PIVOTING. ╙INCE ╤ IS ORTHOGONAL ITS INVERSE IS JUST ╤ TRANSPOSE. ╘O
SOLVE THE LINEAR SYSTEM WE MULTIPLY THE RIGHT HAND SIDE VECTOR BY ╤
TRANSPOSE THEN SOLVE THE TRIANGULAR SYSTEM ╥. ╤ IS COMPUTED IN A
SPECIAL COMPACT FORM AND STORED IN THE SPACE BELOW ╥. ╘HE DECOMPOSITION
IS DONE IN PLACE IN THE STORAGE USED FOR ┴, PLUS AN ADDITIONAL N STORAGE
LOCATIONS. ╤╥ DECOMPOSITION REQUIRES ABOUT TWICE AS MANY FLOPS AS
╟AUSSIAN ┼LIMINATION.
╘HERE IS A VARIATION OF THE ╤╥ SOLUTION KNOWN AS ╤╥ UPDATING. ╘HE
PROBLEM IS SOLVED A ROW AT A TIME. ┴ ╥OW OF ┴ CAN BE READ IN FROM DISK
STORAGE OR CALCULATED AS NEEDED. ╧NLY ╥ NEEDS TO BE STORED IN MAIN
MEMORY, N*(N+1)/2 MEMORY LOCATIONS. ╥ IS INITIALY THE IDENTITY MATRIX
AND IS UPDATED AS EACH ROW OF ┴ AND ITS RIGHT HAND SIDE ELEMENT ARE
PROCESSED. ╤ IS NOT STORED, BUT THE RIGHT HAND SIDE VECTOR IS
SEQUENTIALY MULTIPLIED BY ╤ TRANSPOSE. ┴FTER ALL N ROWS HAVE BEEN
PROCESSED THE SOLUTION IS FOUND BY SIMPLY SOLVING THE TRIANGULAR SYSTEM
╥. ╙INCE THIS METHOD ONLY NEEDS HALF AS MUCH MEMORY STORAGE AS ╠╒
DECOMPOSITION, WE CAN SOLVE PROBLEMS 40% LARGER IN A LIMITED MEMORY
SPACE. ╚OWEVER, THE COST IN FLOPS IS HIGH. ┴CTUALLY ╤╥ UPDATING IS
BEST USED FOR SOLVING LARGE OVERDETERMINED LEAST SQUARES PROBLEMS.
╟AUSS-╩ORDAN IS A VARIATION OF ╟AUSSIAN ┼LIMINATION THAT REDUCES ┴ TO
THE ╔DENTITY MATRIX INSTEAD OF TO ╠╒ FACTORS. ┬Y APPLYING THE SAME
TRANSFORMATIONS TO TO THE RIGHT HAND SIDE THAT REDUCE ┴ TO THE IDENTITY
MATRIX, THE RIGHT HAND SIDE BECOMES THE SOLUTION AT COMPLETION.
╨IVOTING IS REQUIERED. ╟AUSS-╩ORDAN REQUIRES ABOUT 50% MORE FLOPS THAN
╟AUSSIAN ┼LIMINATION AND MOST CODES USE N*N MEMORY STORAGE. ╙INCE THE
╠╒ FACTORS ARE NOT COMPUTED WE CAN'T SOLVE ADDITIONAL RIGHT HAND SIDE
VECTORS LATER, OR ESTIMATE THE MATRIX CONDITION NUMBER, OR USE ITERATIVE
IMPROVEMENT TECHNIQUES. ╔T WILL SOLVE MULTIPLE RIGHT HAND SIDES THAT
ARE AVAILABLE FROM THE START.
╤UARTERSOLVE IS A CLEVER IMPLEMENTATION OF ╟AUSS-╩ORDAN(?) THAT SOLVES
THE PROBLEM A ROW AT A TIME LIKE ╤╥ UPDATING BUT ONLY REQUIRES 1/4 N*N
MEMORY STORAGE. ╫ITH FIXED AVAILABLE MEMORY ╤UARTERSOLVE CAN SOLVE A
PROBLEM TWICE AS LARGE AS ╟AUSSIAN ┼LIMINATION BUT WITH A MODEST
PERFORMANCE PENALTY. ╙OLVING A 2N PROBLEM WITH ╤UARTERSOLVE WOULD TAKE
12 TIMES LONGER (INSTEAD OF 8) THAN ╟AUSSIAN ┼LIMINATION ON A SIZE N
PROBLEM.
═Y RECOMMENDATION IS TO USE ╟AUSSIAN ELIMINATION FOR SOLVING DENSE
GENERAL SYSTEMS OF LINEAR EQUATIONS WHEN ENOUGH MAIN MEMORY IS AVAILABLE
AND SWITCH TO ╤UARTERSOLVE FOR LARGER PROBLEMS. ╞OR SOLVING HUGE
PROBLEMS REQUIERING EXTERNAL STORAGE A BLOCKED VERSION OF ╤╥
DECOMPOSITION MIGHT WORK BEST. ├HOLESKY DECOMPOSITION SHOULD BE USED
FOR SYMETRIC POSITIVE DEFINITE PROBLEMS. ╠ARGE PROBLEMS ARE OFTEN
SPARSE, CONTAINING LOTS OF ZEROS THAT NEED NOT BE STORED. ╙PECIALIZED
CODE EXISTS FOR SOLVING MANY SPARCE PROBLEMS, PARTICULARLY BANDED
MATRICES, AND MANY OF THESE METHODS CAN BE USED ON A ├64. ├ODES FOR
SOLVING UNSTRUCTURED SPARCE PROBLEMS ARE NOT VERY SUITABLE FOR THE ├64
SINCE THEY ARE COMPLEX AND REDUCE THE AMOUNT OF MEMORY AVAILABLE FOR
SOLVING THE PROBLEM. ╚OWEVER, LARGE SPARCE PROBLEMS CAN ALSO BE SOLVED
ON THE ├64 BY ITERATIVE METHODS SUCH AS ╟AUSS-╙IEDEL AND ├ONJUGATE
╟RADIENT ALGORITHMS.
╤╒┴╥╘┼╥╙╧╠╓┼
╤UARTERSOLVE IS A USEFUL METHOD FOR SOLVING GENERAL DENSE SYSTEMS OF
LINEAR EQUATIONS THAT ╔ DISCOVERED ALMOST BY ACCIDENT WHILE DOING RANDOM
RESEARCH IN THE LIBRARY. ╔ HAVE NOT SEEN ANY RECENT TEXTS OR PAPERS
MENTIONING THIS ALGORITHM. ╔ HAVE NOT SEEN ANY REFERENCE TO IT IN THE
├64 LITERATURE EITHER. ┴T LEAST ONE OLDER TEXT MENTIONED IT IN PASSING
SAYING THAT THE CODE WAS TOO LONG OR COMPLEX. ╘HIS IS A VALID POINT
SINCE USUALY THE CODE SIZE DIRECTLY SUBTRACTS FROM THE PROBLEM STORAGE.
╘HE CODE IS LONGER THAN THE ╟AUSSIAN ┼LIMINATION CODE BUT IN MY
IMPLEMENTATION IT ONLY TAKES ABOUT 2╦ OF MAIN MEMORY STORAGE AND IT IS A
REAL ADVANTAGE ON THE ├64. ╫ITH A ├64 WE CAN ALSO PUT THE ENTIRE CODE
IN AN ┼╨╥╧═ ON A CARTRIDGE SO THE CODE SIZE IS OF LITTLE CONCERN.
╔ FOUND ╤UARTERSOLVE IN ╥EF. 1 (╥. ┴. ┌AMBERDINO, 1974), WHICH CREDITED
THE ALGORITHM TO ╥EF. 2 (┴. ╧RDEN, 1960). ╔ AM A LITTLE UNEASY
DESCRIBING THE ALGORITHM SINCE ╔ HAVE NOT SEEN ╥EF. 2 OR ANALYZED THE
ALGORITHM. ╔ HAVE CODED THE ALGORITHM, TESTED IT, AND USED IT TO SOLVE
SOME LARGE PROBLEMS ON A ├64, UP TO N=90. ┌AMBARDINO MAKES TWO
INTERESTING STATEMENTS IN ╥EF 1. "╘HE NUMBER OF ARITHMETIC OPERATIONS
IS THE SAME AS FOR THE ╟AUSSIAN ┼LIMINATION METHOD." ╔ AM REASONABLY
SURE FROM THE DESCRIPTION THAT HE MEANT ╟AUSS-╩ORDAN WHICH REQUIRES
ABOUT 50% MORE ARITHMETIC THAN ╟AUSSIAN ┼LIMINATION. ┴FTER PROCESSING
THE ITH ROW ONLY I(N-I) STORAGE LOCATIONS ARE REQUIRED TO STORE THE
REDUCED MATRIX. ═AX[I(N-I)] = N*N/4. ╘HIS MAXIMUM MEMORY REQUIREMENT
OCCURS AT I = N/2. ┴S I INCREASES FURTHER MEMORY REQUIRED IS REDUCED.
┴LTHOUGH N*N/4 MEMORY LOCATIONS MUST BE ALLOCATED AND DIMENSIONED IN AN
ARRAY AT THE START, ╤UARTERSOLVE ALWAYS USES THE FIRST PORTION OF THE
ARRAY CONTINUOUSLY AND DOES NOT FREE UP MEMORY IN HOLES SCATTERED
THROUGHOUT THE ARRAY. ╘HE ├ LANGUAGE COULD POSSIBLY USE "HEAP STORAGE"
AND RELEASE THE MEMORY FOR ANY OTHER USE AS THE PROCEDURE ADVANCES.
╬OW BACK TO MY INITIAL MEMORY FREE CLAIM. ╘HE LARGE PROBLEM THAT ╔
ACTUALLY WANTED TO SOLVE WAS: ┴*X=B, ┬*X=R, FOR R GIVEN B AND THE SQUARE
MATRICES ┴ AND ┬. ┼LEMENTS OF ┴ AND ┬ ARE MOST EFFICIENTLY CALCULATED
AT THE SAME TIME. ╔ COULD WRITE ┬ TO THE DRIVE AND READ IT BACK IN
AFTER X IS COMPUTED TO CALCULATE R, BUT ╔ ACTUALLY WANTED TO SOLVE THIS
REPEATEDLY INSIDE ANOTHER LOOP AND ╔ DID NOT WANT TO READ AND WRITE TO A
LOUSY 1541 THAT MUCH. ╒SING ╟AUSSIAN ELIMINATION WOULD REQUIRE 2N*N
STORAGE. ╒SING ╤UARTERSOLVE COULD REQUIRE 1.25N*N STORAGE. ╚OWEVER,
ONLY N*N STORAGE IS NEEDED, THAT FOR ┬. ┴T THE ITH STEP THE ITH ROW OF
┴ AND ┬ ARE CALCULATED. ╘HE ROW OF ┴ IS PROCESSED INTO THE THE N*N
DIMENSIONED ARRAY ┬ FILLING IT FROM THE FRONT. ╘HE CORRESPONDING ROW OF
┬ IS STORED IN THE SAME ARRAY ┬ FILLING FROM FROM THE END OF ARRAY ┬.
┴S THE PROCESS CONTINUES ╤UARTERSOLVE "DISSUSES" ARRAY ┬ SO THAT ROWS OF
┬ NEVER OVERWRITE STORAGE NEEDED BY ╤UARTERSOLVE. ┴T THE END WE HAVE
COMPUTED X AND ALL OF ┬ IS STORED IN THE ARRAY ┬. ╙IMPLE
MULTIPLICATION PRODUCES R. ╙O ╔ CAN SAY WITH PRIDE, AT THE EXPENSE OF
HONESTY, THAT ╔ HAVE SOLVED ┴*X=B WITHOUT ANY ADDITIONAL MEMORY STORAGE
FOR ┴.
╨╥╧├ SLV(N#,NR#,I#,╥┼╞ A(),╥┼╞ C(),╥┼╞ B(,),SDB#,╥┼╞ SW#(),╥┼╞ FAIL#) ├╠
╧╙┼─
// ╘HIS ROUTINE SOLVES A SYSTEM OF EQUATIONS USING THE QUARTERSOLVE
// ALGORITHM WITH PARTIAL PIVOTING.
// ╔T IS CALLED A "LINE AT A TIME" AND USES ONLY
// 0.25*NN MEMORY LOCATIONS WHICH ENABLES LARGER PROBLEMS TO BE SOLVED
╙LV CALLS THE SWAP'REAL AND SWAP'INTEGER PROOCEDURES FROM THE STRINGS
PACKAGE. ╘HE STRINGS PACKAGE IS A ╥╧══┼─ PACKAGE ON THE ╙UPER ├HIP ╥╧═.
╔T DOES EXACTLY WHAT IT SAYS, E.G. SWAP'REAL(A,B) IS THE SAME AS:
T:=A; A:=B; B:=T.
╙LV CALLS THE SDOT, ISAMAX#, SSWAP, SSCAL, SAXPY, AND SCOPY ROUTINES
FROM THE BLAS PACKAGE. ╘HE BLAS PACKAGE IS ╠╔╬╦ED TO THE PROGRAM, BUT
IT COULD, AND SHOULD, BE PLACED ON ┼╨╥╧═.
┬ASIC ╠INEAR ┴LGEBRA ╙UBROUTINES, ┬╠┴╙
╘HE ┬╠┴╙ WERE ORIGINALLY WRITTEN FOR THE ╞ORTRAN LANGUAGE TO SPEED
EXECUTION AND STREAMLINE CODE USED FOR SOLVING LINEAR ALGEBRA AND OTHER
MATRIX PROBLEMS. ╘HE ╠╔╬╨┴├╦ ROUTINES, ╥EF. 3, USE THE ┬╠┴╙ AND ARE
PERHAPS THE BEST KNOWN. ╘HE IDEA IS THAT THE ┬╠┴╙ ROUTINES WILL BE
HIGHLY OPTIMIZED FOR A PARTICULAR COMPUTER, CODED IN ═╠ OR A ╚IGH ╧RDER
╠ANGUAGE. ╙OME OPERATING SYSTEMS EVEN INCLUDE ┬╠┴╙ LIKE ROUTINES.
╫RITING FAST EFFICIENT PROGRAMS IS THEN A SIMPLE MATTER OF SELECTING THE
BEST SOLUTION ALGORITHM AND CODING IT IN A MANNER THAT MAKES BEST USE OF
THE BLAS ROUTINES. ╘HERE ARE BLAS ROUTINES FOR SINGLE PRECISION, DOUBLE
PRECISION, AND COMPLEX NUMBERS. ╘HE LEVEL 1 ┬╠┴╙ PERFORM OPERATIONS ON
ROWS OR COLUMNS OF AN ARRAY AND TYPICALY DO N SCALAR OPERATIONS
REPLACING THE INNER MOST LOOP OF CODE. ╘HERE ARE ALSO LEVEL 2 ┬╠┴╙ THAT
PERFORM N*N OPERATIONS AND ╠EVEL 3 ┬╠┴╙ THAT PERFORM N*N*N OPERATIONS.
╬ICHOLAS ╚IGHAM HAS CODED MOST OF THE SINGLE PRECISION LEVEL 1 BLAS
ROUTINES AND PUT THEM IN A ├OMAL 2.0 PACKAGE. ╘HE ├OMAL BLAS PACKAGE IS
INCLUDED ON THE ╨ACKAGES ╠IBRARY ╓OLUME 2 DISK. ╔ AM NOT AWARE OF ═╠
BLAS ROUTINES CODED FOR ANY OTHER ├64/128 LANGUAGES ALTHOUGH THIS IS
CERTAINLY POSSIBLE AND RECOMMENDED.
╘HE ├OMAL BLAS ROUTINES BEHAVE EXACTLY THE SAME WAY THAT THE ╞ORTRAN
BLAS ROUTINES DO EXCEPT THAT ╞ORTRAN CAN PASS THE STARTING ADDRESS OF AN
ARRAY WITH JUST "A", WHILE ├OMAL REQUIRES "A(1)". ╘HE ├OMAL BLAS WILL
ALLOW YOU PASS AN ARRAY, BY REFERENCE, OF SINGLE OR MULTIPLE DIMENSIONS
AND START FROM ANY POSITION IN THE ARRAY. ╔F YOU CODE THE BLAS ROUTINES
AS ORDINARY ├OMAL ROUTINES YOU HAVE TO PASS ADDITIONAL PARAMETERS AND
HAVE SEPARATE ROUTINES FOR SINGLE DIMENSIONED ARRAYS AND TWO DIMENSIONAL
ARRAYS. ╬OTE ALSO THAT ╞ORTRAN STORES TWO DIMENSIONAL ARRAYS BY
COLUMNS, AND ├OMAL (LIKE MANY OTHER LANGUAGES) STORES TWO DIMENSIONAL
ARRAYS BY ROWS. ╔F YOU TRANSLATE CODE BETWEEN ╞ORTRAN AND ├OMAL USING
BLAS ROUTINES YOU WILL HAVE TO CHANGE THE INCREMENT VARIABLES.
╞ORTRAN ├OMAL
DIMENSION C(N), A(ILDA,ISDA) ─╔═ C(N#), A(LDA#,SDA#)
SCOPY(N,C,1,A(I,1),ILDA) SCOPY(N#,C(1),1,A(I#,1),1)
SCOPY(N,C,1,A(1,J),1) SCOPY(N#,C(1),1,A(1,J#),SDA#)
╘HE FIRST SCOPY COPIES ARRAY C INTO THE ITH ROW OF ARRAY A. ╘HE SECOND
SCOPY COPIES ARRAY C INTO THE JTH COLUMN OF ARRAY A.
╘HIS IS WHAT SCOPY DOES IN ╞ORTRAN:
SUBROUTINE SCOPY(N,SX,INCX,SY,INCY)
REAL SX(1),SY(1)
IX=1
IY=1
DO 10 I = 1,N
SY(IY) = SX(IX)
IX = IX + INCX
IY = IY + INCY
10 CONTINUE
RETURN
END
╘HE ├OMAL ┬╠┴╙ DOES EXACTLY THE SAME THING. ╔F CODED ENTIRELY IN ├╧═┴╠
RATHER THAN AS A PACKAGE IT WOULD HAVE TO BE DIFFERENT. ╘HE CALL WOULD
CHANGE.
SCOPY(N#,C(1),1,A(1,J#),SDA#) WOULD HAVE TO BECOME,
SCOPY(N#,C(),1,1,A(,),1,J#,SDA#,SDA#) AND THE ├OMAL PROCEDURE MIGHT BE:
╨╥╧├ SCOPY(N#, ╥┼╞ X(), IX#, INCX#, ╥┼╞ Y(,), IY#, JY#, SDY#, INCY#) ├╠╧╙┼─
IYINC#:=INCY# ─╔╓ SDY# //ASSUMING Y IS DIMENSIONED Y(?,SDY#)
JYINC#:=INCY# ═╧─ SDY#
╞╧╥ I#=1 ╘╧ N# ─╧
Y(IY#,JY#):=X(IX#)
IX#:+INCX#; IY#:+IYINC#; JY#:+JYINC#
┼╬─╞╧╥
┼╬─╨╥╧├ SCOPY
╬OTE THAT MORE INFORMATION HAS TO BE PASSED TO THE PROCEDURE AND USED
THAT THE ═╠ BLAS PICKS UP AUTOMATICALLY. ┴LSO WE WOULD NEED SEPARATE
PROCEDURES TO HANDLE EVERY COMBINATION OF SINGLE AND MULTI DIMENSIONAL
ARRAYS. ╘HE ├OMAL ═╠ BLAS ARE INDEED WONDERFUL. ╞OR SPEED
CONSIDERATIONS THIS SHOULD ALSO BE LEFT AS AN OPEN PROCEDURE OR BETTER
YET JUST USE IN LINE CODE.
╚ERE IS A VERY SIMPLIFIED DESCRIPTION OF WHAT EACH OF THE ROUTINES IN
THE ├OMAL ┬╠┴╙ PACKAGE DOES.
SUM:=SASUM(N#,X(1),1) ╥ETURNS SUM OF ABSOLUTE VALUES IN X().
SUM:=0
╞╧╥ I#:=1 ╘╧ N# ─╧ SUM:+┴┬╙(X(I#))
SAXPY(N#,SA,X(1),1,Y(1),1) ┴DD A MULTIPLE OF X() TO Y().
╞╧╥ I#:=1 ╘╧ N# ─╧ Y(I#):+SA*X(I#)
PROD:=SDOT(N#,X(1),1,Y(1),1) ╥ETURNS DOT PRODUCT OF X() AND Y().
PROD:=0
╞╧╥ I#:=1 ╘╧ N# ─╧ PROD:+X(I#)*Y(I#)
SSWAP(N#,X(1),1,Y(1),1) ╙WAPS X() AND Y().
╞╧╥ I#:=1 ╘╧ N# ─╧ T:=X(I#); X(I#):=Y(I#); Y(I#):=T
SCOPY(N#,X(1),1,Y(1),1) ├OPY X() TO Y().
╞OR I#:=1 ╘╧ N# ─╧ Y(I#):=X(I#)
MAX#:=ISAMAX#(N,X(1),1) ╥ETURNS INDEX OF THE ELEMENT OF X() WITH THE
LARGEST ABSOLUTE VALUE.
T:=0; MAX#:=1
╞╧╥ I#:=1 ╘╧ N#
╔╞ ┴┬╙(X(I#))>T ╘╚┼╬ T:=┴┬╙(X(I#)); MAX#:=I#
┼╬─╞╧╥ I#
SSCAL(N#,SA,X(1),1) ╙CALE X() BY A CONSTANT SA.
╞╧╥ I#:=1 ╘╧ N# ─╧ X(I#):=SA*X(I#)
SNRM2(N#,X(1),1) ╥ETURNS THE 2 NORM OF X().
NORM2:=0
╞╧╥ I#:=1 ╘╧ N# ─╧ NORM2:+X(I#)*X(I#)
NORM2:=╙╤╥(NORM2)
SROT(N#,X(1),1,Y(1),1,C,S) ┴PPLY ╟IVENS ROTATION.
╞╧╥ I#:=1 ╘╧ N# ─╧
T:=C*X(I#) + S*Y(I#)
Y(I#):=S*X(I#) + C*Y(I#)
X(I#):=T
┼╬─╞╧╥ I#
┬EAR IN MIND THAT EACH OF THESE SIMPLE EXAMPLES CAN BE MORE COMPLEX AS
WAS GIVEN FOR SCOPY. ┘OU NOW HAVE ENOUGH INFORMATION TO WRITE YOUR OWN
┬╠┴╙ ROUTINES IN ═╠ OR THE PROGRAMMING LANGUAGE OF YOUR CHOICE, OR TO
EXPAND THE ┬╠┴╙ ROUTINE CALLS IN SLV TO ORDINARY IN LINE CODE.
┘OU CAN ALSO APPLY THE ┬╠┴╙ ROUTINES IN CREATIVE WAYS BESIDES JUST
OPERATING ON ROWS OR COLUMNS. ╞OR EXAMPLE YOU COULD CREATE THE IDENTITY
MATRIX WITH:
─╔═ A(N#,N#)
A(1,1):=1; A(1,2):=0
SCOPY(N#*N#-2,A(1,2),0,A(1,3),1) // ZERO THE REST OF THE MATRIX
SCOPY(N#-1,A(1,1),0,A(2,2),N#+1) // COPY ONES TO THE DIAGONAL.
╥EFERENCES
1. ┌AMBARDINO, ╥. ┴., "╙OLUTIONS OF ╙YSTEMS OF ╠INEAR ┼QUATIONS WITH
╨ARTIAL ╨IVOTING AND ╥EDUCED ╙TORAGE ╥EQUIREMENTS", ╘HE ├OMPUTER ╩OURNAL
╓OL. 17, ╬O. 4, 1974, PP. 377-378.
2. ╧RDEN ┴., "═ATRIX ╔NVERSION AND ╥ELATED ╘OPICS BY ─IRECT ═ETHODS",
IN ═ATHEMATICAL ═ETHODS FOR ─IGITAL ├OMPUTERS, ╓OL. 1, ┼DITED BY ┴.
╥ALSTON AND ╚. ╫ILF, ╩OHN ╫ILEY AND ╙ONS ╔NC., 1960.
3. ─ONGARRA, ╩. ╩., ═OELER, ├. ┬., ┬UNCH, ╩. ╥., ╙TEWART, ╟. ╫.,
╠INPACK ╒SERS' ╟UIDE, ╙╔┴═ ╨RESS, ╨HILADELPHIA, 1979.
========================================================================
╘HE ╫ORLD OF ╔╥├ - ┴ ╬EW ╠IFE FOR THE ├64/128
BY ┬ILL ╠UECK (COOLHAND ON ╔╥├)
1) ╔NTRODUCTION
╫ITH THE MYSTERIOUS AND MAGNIFICENT WORLD OF THE ╔NTERNET GROWING
AT AN ASTOUNDING RATE - LIKE DOUBLING EVERY YEAR - READERS OF THIS
MAGAZINE SHOULD FIND THAT THE ╔NTERNET IS ACTUALLY AVAILABLE TO THEM NOW -
OR AT LEAST VERY SOON. ╔N FACT, MOST READERS OF ├= ╚ACKING PROBABLY
GET THERE COPIES OF THIS MAGAZINE ON THE ╔NTERNET.
╘HE ╔NTERNET IS NOT SIMPLE. ╔T HAS COMPLEXITIES AND INTRICACIES THAT
CAN BAFFLE THE MOST ERUDITE AND EXPERIENCED COMPUTER SCIENTISTS IN THE
WORLD. ┬UT, FOR THE PURPOSES OF THIS ARTICLE, MAYBE YOU CAN JUST ACCEPT
THAT THE ╔NTERNET IS A WORLDWIDE CONNECTION OF DATA LINES THAT LET
COMPUTERS ALL OVER THE WORLD TALK TO EACH OTHER.. AND MORE IMPORTANTLY,
THAT ALLOW THE ╨┼╧╨╠┼ USING THE COMPUTERS ALL OVER THE WORLD TO TALK TO
OTHER COMPUTERS.. AND TO TALK TO OTHER ╨┼╧╨╠┼! ╚ERE, THEN, LIES THE
FOUNDATION FOR ╔╥├: IT IS THE MECHANISM ON THE ╔NTERNET THAT ALLOWS
╨┼╧╨╠┼ TO TALK TO OTHER ╨┼╧╨╠┼.
2) ╟ETTING ON THE ╬ET
╔F YOU OBTAINED THIS MAGAZINE VIA THE ╔NTERNET, THEN YOU HAVE PASSED
╙TEP 1 (FINDING A SITE)! ╔F YOU DO NOT HAVE ACCESS TO THE ╔NTERNET
(AND HAVE NOT TRIED), THEN YOU NEED TO LOOK AROUND. ╨OSSIBLE SITES MAY
BE A COLLEGE/UNIVERSITY, YOUR EMPLOYER (USE WITH CARE), OR A COMMERCIAL
PROVIDER.
╔F YOU ARE ENROLLED IN COLLEGE, THEN YOU PROBABLY HAVE AN ACCOUNT, OR
YOU MAY BE ENTITLED TO ONE, WITH NO OR LITTLE COST. ╘HE POLICIES ON
STUDENT ACCOUNTS VARY A LOT FROM INSTITUTION TO INSTITUTION, AND FROM
COUNTRY TO COUNTRY. ┬UT CHECK INTO IT.. IT IS ONE OF THE MOST COMMON
METHODS OF ╔NTERNET ACCESS.
╔F YOU ARE EMPLOYED, AND YOUR COMPANY HAS ACCESS TO THE ╔NTERNET, IT
MAY BE POSSIBLE FOR YOU TO USE THEIR FACILITIES. ╩UST A WORD OF
CAUTION - MAKE SURE THAT IT IS OK WITH YOUR EMPLOYER TO USE HIS
FACILITIES... AND NOT ON "COMPANY TIME".
┴NOTHER WAY THAT IS BECOMING INCREASINGLY MORE COMMON IS TO USE
COMMERCIAL "╔NTERNET PROVIDERS". ╘HESE ARE COMPANIES WHOSE SOLE
PURPOSE IS TO OFFER YOU AN "ACCOUNT" AND GIVE YOU ACCESS TO THE
╔NTERNET. ╘HE COST, TIME ON LINE, STORAGE, ACCESS, ETC., CAN VARY
GREATLY.. YOU MUST SHOP AROUND A BIT.. IF YOU HAVE THIS CHOICE AT
ALL.. FOR THE BEST DEAL.
╘HESE COMMERCIAL SITES ARE NOT ALWAYS EASY TO FIND. ╘HERE MAY BE
SEVERAL COMMERCIAL PROVIDERS IN AN AREA, BUT, STRANGELY, THEY TEND NOT
TO ADVERTISE. ╫ORD-OF-MOUTH THROUGH FRIENDS, ┬┬╙S, OR ╒SER ╟ROUPS SEEM
TO BE THE BEST WAY TO LOCATE THE SITE POSSIBILITIES. ┬UT THEY ├┴╬
PROVIDE A VERY GOOD SOLUTION.
┴NOTHER VARIATION ON COMMERCIAL SITES ARE NATIONAL COMPANIES SUCH AS
├OMPUSERVE, ╟ENIE, ┴MERICA ╧NLINE AND ─ELPHI. ╘HEY PROVIDE VARYING DEGREES OF
ACCESS.. AND POSSIBLY AT SOMEWHAT HIGHER COSTS THAN LOCAL PROVIDERS.
┬UT, AGAIN, IT IS ANOTHER OPTION.
╘HERE IS ═╒├╚ TO DO ON THE ╔NTERNET, ONCE YOU HAVE ACCESS TO IT: TELNET,
FTP, USENET, ARCHIE, GOPHER, WWW... ╘HESE MAY BE JUST NAMES TO YOU
NOW.. BUT THE ARE ALL FASCINATING PARTS OF THE ╔NTERNET. ┬UT THIS
ARTICLE IS INTENDED AS AN INTRODUCTION TO ╔╥├ - A FABULOUS ╔NTERNET
RESOURCE WHICH ALLOWS USERS WHO HAVE ACCESS TO A CLIENT PROGRAM CALLED
╔╥├╔╔ (MOST OFTEN INVOKED AS "IRC") TO TALK TO EACH OTHER (AND OFTEN TO
EXCHANGE FILES) IN WORLD-WIDE CONVERSATIONAL "CHANNELS" (LIKE "PARTY
LINES", OFTEN CALLED "ROOMS" ON SOME ┬┬╙S). ╫HY IS THIS IMPORTANT TO
READERS OF THIS MAGAZINE? ╫ELL, THERE IS A CHANNEL FOR C64/128 USERS ON
╔╥├ CALLED #C-64, A PLACE WHERE C64/128 USERS ARE ABLE TO MEET AND
EXCHANGE ALL SORTS OF INFORMATION, OPINIONS, AND FILES. ═ORE ON THIS
LATER.
3) ╘HE ╔╥├ ├LIENT
╞IRST, TO USE ╔╥├ IT IS NECESSARY TO HAVE ACCESS TO AN ╔╥├ CLIENT. ┴
CLIENT IS A PROGRAM, USUALLY AVAILABLE ON YOUR LOCAL SITE, WHICH
ACTUALLY INTERPRETS AND RESPONDS TO YOUR COMMANDS, ACCEPTS YOUR TYPING,
AND SHOWS YOU THE CONVERSATION ON THE CHANNEL(S) YOU HAVE JOINED.
╘HE MOST COMMON WAY TO ACCESS ╔╥├ FROM A SITE IS TO USE THE ╔╥├╔╔
CLIENT THAT YOUR SITE MAKES AVAILABLE. ╘HIS IS MOST OFTEN DONE BY
SIMPLY TYPING "IRC" AT YOUR PROMPT OR INVOKING THE IRC OPTION FROM YOUR
MENU IF YOU DON'T HAVE A SHELL ACCOUNT. ╘HE FIRST THING YOU WILL
NOTICE IS THAT YOUR CLIENT IS ATTEMPTING TO CONNECT TO A "SERVER". ┴
SERVER IS A SPECIAL PROGRAM, RUN ONLY ON CERTAIN SITES, THAT ACTUALLY
PROVIDES THE BACKBONE OF THE ╔╥├ NETWORK.
═OST SITES HAVE SEVERAL SERVERS PRE-DEFINED. ┘OU SHOULD SEE THE CLIENT
TRYING ONE OR MORE SERVERS UNTIL IT CONNECTS WITH ONE.
╫ITH ╒NIX IRC CLIENTS YOU CAN DEFINE YOUR OWN UNIQUE SET OF SERVERS BY
STARTING ╔╥├ WITH:
IRC NICK SERVER1 SERVER2 ... SERVER╬
WHERE "SERVER╪" IS THE ALPHA OR NUMERIC ╔╨ ADDRESS OF THE SERVER. ╘HIS
WILL AUTOMATICALLY SET YOUR IRC NICK (HANDLE) AND WILL ESTABLISH A
SERIES OF SERVERS THAT YOUR CLIENT WILL SWITCH TO IF YOUR CONNECTION TO
╔╥├ GETS BROKEN (OR IF A SERVER IS NOT AVAILABLE WHEN YOU INVOKE
"IRC").
╫HAT IS AN ╔╨ ADDRESS, YOU ASK? ╫ELL, A BASIC PREMISE OF THE ╔NTERNET
IS THAT EACH COMPUTER ON THE NET (AT ALL SITES) HAS A ╒╬╔╤╒┼ ADDRESS -
A COMPUTER CODE - THAT ALLOWS OTHER COMPUTERS TO SEND SPECIFIC DATA
JUST TO THAT COMPUTER. ╔N THAT WAY, COMPUTERS CAN MAKE SURE THAT THE
MESSAGES AND DATA FILES THAT THEY WANT (AND ┘╧╒ WANT) TO SEND TO
CERTAIN PLACES GET TO THEIR PROPER DESTINATIONS.
╔╨ ADDRESSES MAY BE USED IN AN ALPHABETIC OR NUMERIC FORM. ╔N MOST
CASES THEY CAN BE USED INTERCHANGEABLY. ╙O, ALL IRC SERVERS HAVE A
UNIQUE ALPHABETIC (AND AN EQUIVALENT NUMERIC) ╔╨ ADDRESS.
╧NCE AN ╔╥├ SESSION IS IN PROGRESS, ╒NIX USERS CAN CHANGE SERVERS BY
TYPING:/SERVER NEWSERVER WHERE "NEWSERVER" IS AS ABOVE, THE ALPHA OR
NUMERIC ╔╨ ADDRESS OF THE SERVER YOU WANT TO SWITCH TO. ═ORE ON SERVERS
LATER; BUT JUST TO MENTION FEW NOW: IRC.INDIANA.EDU (MIDWEST);
IRC.VIRGINIA.EDU (EAST); IRC.CTR.COLUMBIA.EDU (EAST); IRC.MATH.BYU.EDU
(WEST); IRC.COLORADO.EDU (MIDWEST); IRC.TEXAS.NET (SOUTHWEST). ╘HERE
ARE DOZENS MORE. ╩UST ASK SOMEONE ON ╔╥├...OR DO A FEW /WHOIS NICK
COMMANDS. ┘OU WILL SPOT MANY MORE.
╔F YOUR SITE DOES NOT HAVE AN IRC CLIENT, IT SHOULD BE POSSIBLE TO
INSTALL ONE YOURSELF. ╘HIS MEANS THAT YOU NEED TO FTP THE SOURCE CODE
FOR AN IRC CLIENT TO YOUR ACCOUNT ON YOUR SITE, MAKE SOME USUALLY MINOR
EDITS, THEN COMPILE THE CODE IN YOUR HOME DIRECTORY OR A SUBDIRECTORY
BELOW IT.
╧NE GOOD SITE FOR OBTAINING THE NECESSARY IRC CLIENT CODE IS
CS.BU.EDU. CD TO /IRC/CLIENTS. ╒NIX USERS WILL FIND THE ╔╥├╔╔ CLIENT
SOURCE CODE IN TWO FORMS: ╔╥├2.2.9.TAR.┌ (╒NIX TAR AND COMPRESS AT
471K) OR ╔╥├2.2.9.TAR.GZ (╒NIX TAR AND ╟╬╒ COMPRESS AT 306K). ┬OTH
FILES ARE THE SAME (EXCEPT FOR THE COMPRESSION). ┬E SURE TO USE
"┬╔╬┴╥┘" MODE FOR THE FTP TRANSFER.
═OVE THE FILE TO ITS OWN SUBDIRECTORY IF YOU HAVE NOT FTP'D IT TO ONE
ALREADY. ╘HEN UNCOMPRESS AND UNTAR THE FILE. ┘OU SHOULD NOW FIND A
SMALL SUBDIRECTORY TREE OF FILES. ┬E SURE AND READ THE ╔╬╙╘┴╠╠ FILE IN
THE TOP SUBDIRECTORY.
┴LSO IN THE MAIN SUBDIRECTORY, THERE SHOULD BE TWO FILES THAT NEED
EDITING TO MAKE THE CLIENT WORK WITH YOU SITE. ╧NE IS "═AKEFILE". ╔N
IT THERE ARE AT LEAST TWO EDITS. ═AKE ╔╬╙╘┴╠╠_┼╪┼├╒╘┴┬╠┼ THE PATH NAME
THAT U WANT THE EXECUTABLE TO RESIDE IN. ╘HIS IS MOST OFTEN YOUR HOME
DIRECTORY OR THE "BIN" SUBDIRECTORY UNDER YOUR HOME DIRECTORY. ╘HE
OTHER IS ╔╥├╔╔_╠╔┬╥┴╥┘. ╙ET THIS TO THE TOP SUBDIRECTORY WHERE THE
╔╥├╔╔ CODE RESIDES. ┘OU ALSO MUST READ THROUGH THE COMPUTER SYSTEM
OPTIONS AND SET THEM FOR THE TYPE OF COMPUTER AND ╧PERATING ╙YSTEM THAT
YOUR SITE USES.
╘HE OTHER FILE IS "CONFIG.H". ├HANGE THE #DEFINE ─┼╞┴╒╠╘_╙┼╥╓┼╥ LINE
TO THE ALPHA OR NUMERIC ADDY OF YOUR PRIMARY DEFAULT SERVER. ┬E SURE
TO ENCLOSE THE SERVER IN QUOTES ("SERVER").
╞OR ╓═╙ USERS, THERE IS A SUBDIRECTORY IN "CLIENTS" NAMED VMS. CD TO
IT. ╘HERE ARE TWO VERSIONS - IRC176 AND IRC╔╔-FOR-VMS. ╘HE FIRST IS
A MORE NATIVE ╓═╙ VERSION, THE SECOND IS A ╒NIX-LIKE VERSION. ╘HEY ARE
BOTH EXECUTABLES, AND SHOULD RUN ON ╓═╙ SYSTEMS. ╘RY BOTH.. SEE WHICH
YOU LIKE BEST.
┴NOTHER FAIRLY NEW AREA OF ╔╥├ CLIENTS IS THE PERSONAL CLIENT, RUNNING
ON YOUR OWN COMPUTER WHICH WOULD BE CONNECTED TO THE ╔NTERNET THROUGH A
VERSION OF ╙╠╔╨ OR ╨╨╨, PROTOCOLS THAT MOVE MUCH OF THE OVERHEAD OF A
NORMAL ╔NTERNET PROVIDER DOWN TO YOUR OWN MACHINE. ╘HERE ARE ╔╥├ CLIENTS
AVAILABLE FOR THE ╨├, ┴MIGA, ═┴├... AND EVEN THE RUMOR OF ONE TO BE
PRODUCED FOR THE C64/128. ╘HIS TYPE OF CLIENT IS EXPANDING VERY
RAPIDLY AND WILL BE A SIGNIFICANT OPTION FOR AN EVER INCREASING NUMBER
OF ╔NTERNET USERS.
╔F YOU HAVE ╘ELNET ONLY ACCESS FROM YOUR SITE, THERE ARE SOME SITES
WHICH OFFER A "PUBLIC" IRC CLIENT, ONES WHICH YOU CAN USE WITHOUT
HAVING AN ACCOUNT AT THAT SITE.. SORTA LIKE ANONYMOUS FTP FOR THOSE OF
YOU WHO KNOW WHAT THAT IS. ╘HERE ARE DRAWBACKS, THOUGH. ╘HERE ARE NOT
MANY OF THESE PUBLIC CLIENTS, THEY ARE OFTEN SLOW IN RESPONSE TIME, YOU
CANNOT EXCHANGE FILES WITH OTHER USERS (─├├), AND MANY OF THE SITES ARE
NOT ALWAYS UP. ╙TILL, IT IS ONE POSSIBILITY THAT MIGHT WORK FOR
CERTAIN SITUATIONS. ┴CTUALLY, IT IS THE WAY THAT ╔ STARTED ON ╔╥├ AND
USED IT FOR SEVERAL MONTHS (MY SITE DID NOT HAVE A LOCAL CLIENT, AND ╔
DID NOT KNOW HOW TO INSTALL ONE MYSELF).
╘HE PUBLIC ╔╥├ SITES ╔ KNOW ABOUT NOW ARE TIGER.ITC.UNIVIE.AC.AT 6668,
SCI.DIXIE.EDU 6667, IRC.NSYSU.EDU.TW, AND IRC.DEMON.CO.UK. ╘HEY ARE
NOT AVAILABLE FROM ALL SITES, AND USAGE IS LIMITED. ┬UT TRY THEM IF
YOU NEED TO.
┴NOTHER VARIATION OF THE "PUBLIC" OPTIONS IS TO APPLY FOR A FREE ╒NIX
ACCOUNT AT NYX.CS.DU.EDU. ┘OU WILL HAVE TO BE VALIDATED, WHICH INVOLVES
A LITTLE PAPERWORK. ┬UT ONCE COMPLETED, YOU WILL HAVE A ╞╥┼┼ ╒NIX
ACCOUNT WITH FULL ╔╥├ PRIVILEGES, INCLUDING ─├├ FILE EXCHANGE. ╧F
COURSE, YOU NEED A "LOCAL" ACCOUNT SOMEWHERE WITH TELNET AND FTP
PRIVILEGES, BUT THIS IS OFTEN EASIER TO OBTAIN THAN AN ACCOUNT WITH ALL
OPTIONS LOCALLY.
4) ┬ASICS OF ╔╥├
╫ELL, HOPEFULLY, YOU WILL NOW HAVE AN ╔NTERNET SITE WITH A METHOD OF
ACCESSING ╔╥├. ╬EXT, WE WANT TO GIVE SOME TIPS ON USING AND ENJOYING
╔╥├ AND INTRODUCE ─├├, THE COMMAND FOR TRANSFERRING FILES BETWEEN PEOPLE
ON ╔╥├... AND BETWEEN "BOTS" AND PEOPLE.
┴ "BOT", YOU SAY? ╙OME OF YOU MAY LAUGH; SURE OF COURSE, A BOT. ╫HAT
ELSE IS NEW? ┬UT... ╔ REMEMBER THAT IT WAS AGES BEFORE ╔ FINALLY
FIGURED OUT.. OR SOMEONE GAVE ME A CLUE.. AS TO WHAT A "BOT" REALLY WAS.
┬EFORE WE GO ON, LET ME GIVE YOU A ╓┼╥┘ BRIEF DESCRIPTION OF A BOT. ╫E
CAN SAY THAT A BOT MAY BE A "SCRIPT", A SERIES OF ╔╥├ LANGUAGE
STATEMENTS UNDERSTOOD BY YOUR ╔╥├ CLIENT; OR IT MAY BE A SEPARATE
PROGRAM (TYPICALLY WRITTEN IN "├"); WHICH, IN EITHER CASE, RUNS WITHOUT
ANY HELP FROM ITS "OWNER" - ┘╧╒.
╔NSTEAD, A BOT IS INTENDED TO RESPOND TO OTHERS ON ╔╥├ WHO "TALK" TO IT
BY "/MSG", "/DCC CHAT", OR EVEN "ON-CHANNEL" COMMANDS LIKE "!LIST" OR
"&HELP". ╧NE BOT EVEN LISTS THE C64 FILES IT HAS ON-LINE IN RESPONSE TO
SOMEONE TYPING "LOAD "$",8".
╫HAT A BOT DOES AND HOW YOU COMMAND IT VARIES A ╠╧╘. ╘HERE REALLY IS NO
STANDARD WAY TO TALK TO A BOT. ╘RY "/MSG <BOTNAME>" HELP AS A STARTING
POINT AND SEE WHAT HAPPENS. ═OST OFTEN THERE WILL BE INSTRUCTIONS THAT
TELL YOU WHAT TO DO NEXT. ┼XPERIMENT A LITTLE - YOU WILL GET THE HANG
OF IT.
┬ACK TO THE MAIN PLOT. ╘HE FIRST THING TO DO AFTER YOU GET CONNECTED TO
╔╥├ IS TO CHOOSE A "NICK". ╘HIS IS THE HANDLE THAT YOU WILL BE KNOWN BY
AND TALKED TO ON ╔╥├. ─O THIS BY TYPING:
/NICK <NICK>
╔T'S YOUR CHOICE.. UNLESS SOMEONE ELSE IS ALREADY USING IT. ╔╥├ DOES
NOT LET TWO PEOPLE USE THE SAME NICK AT THE SAME TIME. ╔T WILL TELL YOU
ABOUT THIS IF YOU TRY - SOMETIMES IN A RATHER ACTIVE WAY - LIKE "KICK"
YOU OFF. ─ON'T WORRY - JUST RECONNECT.. BUT TRY A DIFFERENT NICK. ╘RY
JUST CHANGING THE NICK A LITTLE - LIKE EVEN PUTTING A "1" OR "2" BEHIND
IT.
┴NY NUMBER OF PEOPLE, HOWEVER, CAN USE THE SAME NICK AT DIFFERENT TIMES.
╘HIS ├┴╬ CAUSE A LITTLE CONFUSION.. MAKE SURE YOU KNOW YOU ARE TALKING
TO WHO YOU THINK YOU ARE.. CHECK A NICK'S WHOLE ADDRESS WITH:
/WHOIS <NICK>
╬EXT, YOU WILL WANT TO JOIN A CHANNEL. ─O THIS BY TYPING:
/JOIN #<CHANNEL>
┴ CHANNEL IS A LOGICAL CONNECTION OF ALL ╔╥├ USERS ANYWHERE IN THE WORLD
THAT HAVE TYPED THE SAME /JOIN COMMAND. ┴LL LINES TYPED TO THE CHANNEL
BY ANYONE ON THE CHANNEL ARE SPREAD BY ╔╥├ TO ALL OTHER PEOPLE WHO ARE
ON THE CHANNEL. ╘HIS IS THE REAL POWER OF ╔╥├... A WORLD-WIDE
"CONFERENCE" OR "PARTY LINE", WHERE PEOPLE WITH THE SAME INTERESTS CAN
COMMUNICATE WITH EACH OTHER.
┬ECAUSE OF DIFFERENT DELAYS IN DIFFERENT PARTS OF THE ╔NTERNET, ALL THE
LINES TYPED BY EVERYONE WILL NOT ALWAYS APPEAR AT THE SAME TIME OR EVEN
IN THE SAME ORDER AT EVERYONE'S TERMINAL. ╘HIS USUALLY DOES NOT CAUSE
MUCH OF A PROBLEM - JUST BE AWARE THAT IT HAPPENS.
╔F THE CHANNEL NAME DOES NOT EXIST AT THE TIME YOU TYPE /JOIN, IT WILL
BE CREATED FOR YOU! ┘ES, ANYONE CAN "CREATE" A CHANNEL. ┬UT #C-64 IS
ALMOST ALWAYS THERE. ╟IVE IT A TRY!
┴FTER YOU GET ON A CHANNEL, YOU CAN TYPE:
/WHO *
╘HIS WILL GIVE YOU A LIST OF WHO (WHICH NICKS) IS ON THE CHANNEL AND
WHAT THEIR HOME SITES ARE. ╘HIS ADDRESS MAY OR MAY NOT BE THE CORRECT
EMAIL ADDRESS FOR THE NICK - SO CHECK WITH THE PERSON FIRST (PERHAPS A
"/MSG <NICK>" - SEE BELOW) IF YOU WANT TO EMAIL HIM.
┴S MENTIONED BEFORE, NORMAL CHANNEL CONVERSATION IS SEEN BY EVERYONE WHO
HAS JOINED THE CHANNEL. ╘HIS IS GREAT MOST OF THE TIME. ╧CCASIONALLY,
THOUGH, YOU MAY WANT TO TELL JUST ONE PERSON (OR BOT) SOMETHING THAT THE
ENTIRE CHANNEL WOULD NOT WANT TO HEAR. ╔N THIS CASE, USE THE COMMAND:
/MSG <NICK> <MESSAGE>
╘YPE IT ON A LINE OF ITS OWN, AND JUST <NICK> WILL SEE YOUR <MESSAGE>.
╤UITE HANDY FOR THE MORE "PERSONAL" OR "SPECIALIZED" CONVERSATIONS.
├AREFUL, THOUGH... USE THE WRONG <NICK> OR LEAVE OUT THE "/" AND PEOPLE
OTHER THAN YOU INTENDED WILL SEE YOUR <MESSAGE>.
╔F YOU FIND YOU ARE DOING A LOT OF /MSG'S TO THE SAME NICK, TRY:
/QUERY <NICK>
╘HIS WILL PUT YOU IN A SORT OF 'PERMANENT' /MSG <NICK> MODE, SO THAT
EVERYTHING YOU TYPE THAT WOULD NORMALLY GO TO THE CHANNEL WILL NOT ACT
LIKE A "/MSG <NICK>" PRECEDED IT, AND IT WILL GO JUST TO <NICK>. ╘YPE
JUST "/QUERY" TO CANCEL THIS MODE.
╠ET'S JUMP, NOW, TO /DCC, THE COMMAND THAT ALLOWS MOST ╔╥├ USERS TO
TRANSFER FILES. ─├├ STANDS FOR "─IRECT ├LIENT TO ├LIENT". ╫HAT IT DOES
IS ALLOW TWO NICKS TO TRANSFER FILES *DIRECTLY* BETWEEN THEIR SITES, NOT
GOING THROUGH EITHER OF THEIR SERVERS. ╧NE OF THE NICKS CAN EVEN BE A
BOT; ╔╥├ DOES NOT MAKE A DISTINCTION.
╫HEN TWO NICKS EXCHANGE FILES, THE SENDER MUST ALWAYS START BY TYPING:
/DCC SEND <NICK> <FILENAME>
╘HE RECIPIENT WILL GET A MESSAGE TELLING WHAT FILE IS BEING OFFERED AND MUST
TYPE:
/DCC GET <NICK> [FILENAME]
╘HE [FILENAME] IS OPTIONAL, BUT MUST BE USED IF MORE THAN ONE FILE IS TO
BE TRANSFERRED SIMULTANEOUSLY. ┘ES, SIMULTANEOUS TRANSFER OF MULTIPLE
FILES ├┴╬ BE DONE. ═ANY PEOPLE DO NOT REALIZE THIS. ╩UST USE THE
[FILENAME] OPTION WITH THE "/DCC GET" COMMAND.
╘HE FILES THAT YOU SEND AND THE FILES THAT YOU RECEIVE WITH ─├├ ARE
ALWAYS IN THE DIRECTORY YOU ARE IN WHEN YOU START ╔╥├. ┘OU CAN TYPE "/CD"
TO SEE WHAT THAT DIRECTORY IS AND YOU CAN TYPE:
/CD <PATHNAME>
TO CHANGE THAT DIRECTORY. ╧R, YOU CAN GIVE THE ABSOLUTE OR RELATIVE
PATHNAME OF THE FILE YOU WANT TO SEND IF IT IS NOT IN YOUR "LOCAL"
DIRECTORY.
╘HERE ARE OFTEN A COUPLE OF BOTS ON #C-64 THAT CAN GIVE YOU C-64 FILES.
"COOLHAND" IS PARTLY A SCRIPT BOT THAT CURRENTLY HAS A LOT OF C-64 FILES
AVAILABLE FOR ─├├. ╔F COOLHAND IS ON ╔╥├, TYPE:
/MSG COOLHAND XDCC LIST
TO SEE A LIST OF LISTS (OF FILES). ╘O SEE THE INDIVIDUAL FILES ON LIST N,
TYPE:
/MSG COOLHAND XDCC LIST #N
╘O HAVE COOLHAND'S SCRIPT DCC YOU FILE #N, TYPE:
/MSG COOLHAND XDCC SEND #N
FOLLOWED BY:
/DCC GET COOLHAND
WHEN YOU GET THE DCC OFFER MESSAGE.
╘HERE ARE MANY SCRIPTS THAT YOU CAN USE THAT WILL AUTOGET A FILE THAT IS
─├├'D TO YOU. ╘HE XDCC SCRIPT THAT COOLHAND USES IS ONE SUCH SCRIPT.
(┘ES, COOLHAND WILL ALSO AUTOGET A FILE THAT YOU SEND TO IT.)
5) ╫HAT/╫HO IS ON ╔╥├?
╧K, NOW YOU ARE ON ╔╥├. ╙O WHAT WILL YOU FIND? ╫HO IS ON THE #C-64?
╘HE ANSWERS ARE QUITE VARIED.. AND CONSTANTLY CHANGING. ╔ PERSONALLY
HAVE BEEN ON ╔╥├ FOR OVER 2 YEARS.. (OR IS IT 3?) ┴ND ╔ HAVE YET TO
ASCERTAIN AN ABSOLUTE PATTERN OF PEOPLE OR TOPICS. ╞RUSTRATING? ╫ELL,
MAYBE TO SOME. ┬UT INTERESTING? ┘ES, MOST CERTAINLY. ╔╥├, AND THE
#C-64 CHANNEL, IS A MICROCOSM OF THE WORLD, WITH ALL ITS VARIETY OF
PEOPLE, PERSONALITIES, PROJECTS, PROPAGANDA, AND PRIORITIES. ╔T IS A
CAPABILITY, A TOOL FOR COMMUNICATIONS, THAT IS UNEXCELLED IN ITS SCOPE
AND POSSIBILITIES.
╔╥├ IS TOTALLY INTERNATIONAL, AND SO IS THE #C-64 CHANNEL. ┬ESIDES THE
╒.╙. AND ├ANADA, ┼UROPE IS VERY WELL REPRESENTED. ╘HERE IS ALSO A
SMALLER BUT INCREASINGLY ACTIVE CONTINGENT IN ┴USTRALIA, AS THE NET
BECOMES MORE ACCESSIBLE THERE. ┘OU WILL ALSO FIND A FEW C-64 USERS IN
╙. ┴MERICA, ┴FRICA, AND ┴SIA. ╥USSIA AND OTHER FORMER ╙OVIET ╒NION
COUNTRIES ALSO HAVE A PRESENCE. ┼NGLISH IS THE ACCEPTED LANGUAGE FOR
USE ON #C-64, ALTHOUGH YOU WILL OCCASIONALLY SEE A FEW OTHER LANGUAGE
USED FOR BRIEF TIMES.
╫HAT IS THE CHANNEL USED FOR? ╩UST ABOUT ANYTHING YOU CAN IMAGINE THAT
NORMAL CONVERSATION WOULD BE USED FOR. ╫ITH A SPECIAL EMPHASIS FOR THE
SPECIAL INTEREST OF MOST CHANNEL PARTICIPANTS - THE C64/128. ╞OR THE
MOST PART, ALMOST EVERYONE ON THE CHANNEL HAS HAD OR STILL HAS A C64 OR
C128. ╙OME ARE ACTIVE USERS ON A REAL C64/128, WHILE OTHERS USE ONE OF
THE SEVERAL EMULATORS THAT EXIST FOR VARIOUS PLATFORMS. ═ANY FORMER AND
CURRENT 64 "SCENE" MEMBERS ARE FINDING THEIR WAY TO THE CHANNEL, BUT ALL
MEMBERS OF THE C64 COMMUNITY ARE ALWAYS WELCOME, AND ALL ARE TREATED
EQUALLY.
═ANY PEOPLE FIND ╔╥├ AND #C-64 A VERY USEFUL WAY TO EXCHANGE INFORMATION
QUICKLY WITHOUT HAVING TO WAIT FOR EMAIL TO PASS BACK AND FORTH. ┴S WAS
MENTIONED BEFORE, THE ─├├ CAPABILITY ALLOWS FOR IMMEDIATE TRANSFER OF
FILES, ANOTHER QUICK AND EFFECTIVE WAY TO PASS INFORMATION AND THINGS
LIKE UTILITIES AND CODING EXAMPLES. ╙UCH CAPABILITIES HAVE ENCOURAGED
MANY PEOPLE TO EITHER RETURN TO THE C64 OR TAKE UP USING AND PROGRAMMING
IT FOR THE FIRST TIME. ┘ES, THE C64 COMMUNITY IS ACTUALLY GROWING
AGAIN, THANKS IN PART TO THE GROWING PRESENCE OF THE ╔NTERNET, ╔╥├, AND
#C-64!
╙O, WHEN YOU FIRST GET ON THE CHANNEL FOR THE FIRST TIME, DON'T BE
AFRAID TO ASK FOR HELP. ┘OU WILL PROBABLY FIND THAT THE PEOPLE ON THERE
ARE EITHER NEW THEMSELVES, OR WERE ONCE NEW AT ONE TIME AND HAD THE SAME
UNCERTAINTIES AND QUESTIONS THAT YOU DO. ═OST EVERYONE IS VERY WILLING
TO HELP NEW PEOPLE. ╙O ASK. ┴LSO, IF YOU HAVE KNOWLEDGE OR A TALENT TO
OFFER OR A WILLINGNESS TO HELP SOMEHOW, JUST MAKE THAT KNOWN. ╘HE
CHANNEL IS FULL OF PEOPLE, SOME OF WHOM PROBABLY NEED EXACTLY WHAT YOU
HAVE TO GIVE.
┴ KEY THING: BE PATIENT! ╫HEN YOU ARE NEW ON THE CHANNEL, YOU MAY NOT
BE NOTICED RIGHT AWAY, ESPECIALLY IF THERE ARE SEVERAL CONVERSATIONS
ALREADY GOING ON. ╔N OTHER CASES, YOU MAY FIND THAT THERE IS REALLY NO
ONE ON THE CHANNEL, EXCEPT MAYBE A FEW BOTS. ╙O HANG IN THERE OR COME
BACK A BIT LATER. ┬ELIEVE ME, THE ╔╙ A LOT OF ACTION ON #C-64 MOST OF
THE TIME.
┬ESIDES BEING PATIENT YOURSELF, BE PATIENT WITH OTHER PEOPLE ON THE
CHANNEL. ╠IKE IN THE NON-CYBER WORLD, MISUNDERSTANDINGS ├┴╬ OCCUR, SINCE
YOUR TOTAL COMMUNICATION WITH OTHER PEOPLE IS VIA THE TYPED WORD. ┬UT
THE SAME RULES OF COURTEOUSNESS THAT COMMON SOCIETY UTILIZES ALSO APPLY
ON ╔╥├. ╘REAT PEOPLE WITH RESPECT AND KINDNESS, AND THEY WILL MOST
LIKELY RESPOND IN A LIKE MANNER. ╙OUNDS LIKE THE GOLDEN RULE? ╔ THINK
SO, AND ╔ THINK YOU WILL FIND THAT ITS WORKS PRETTY WELL ON ╔╥├ AS IT
DOES IN OTHER LIFE.
╚OPEFULLY, THIS ARTICLE WILL HELP YOU GET STARTED ENJOYING ╔╥├ AND
PARTICULARLY #C-64. ╘HERE'S A LOT TO BE GAINED THERE... INFORMATION,
FILES, AND EVEN NEW FRIENDS. ╔T'S A WAY TO GIVE OUR C64 COMMUNITY NEW
LIFE AND SPIRIT. ╟IVE IT A TRY! ╙EE YOU THERE.
*****************
╙OME OF THE MATERIAL IN THIS ARTICLE WAS PREVIOUSLY PUBLISHED IN "─RIVEN"
AND IS USED HERE BY PERMISSION.
========================================================================
╙WIFT╠INK-232 ┴PPLICATION ╬OTES (VERSION 1.0B)
╘HIS INFORMATION IS MADE AVAILABLE FROM A PAPER DOCUMENT PUBLISHED BY ├═─,
WITH ├═─'S EXPRESS WRITTEN PERMISSION. [╘HIS VERSION INCLUDES A COUPLE OF
GRAMMATICAL CORRECTIONS AND MINOR CHANGES, PLUS, THE SOURCE CODE HAS BEEN
DEBUGGED AND EXTENDED.]
1. ╔╬╘╥╧─╒├╘╔╧╬
╘HE ╙WIFT╠INK-232 ┴├╔┴ CARTRIDGE REPLACES THE ├OMMODORE ╦ERNAL ╥╙-232 ROUTINES
WITH A HARDWARE CHIP. ╘HE CHIP HANDLES ALL THE BIT-LEVEL PROCESSING NOW DONE
IN SOFTWARE BY THE ├OMMODORE ╦ERNAL. ╘HE ┴├╔┴ MAY BE ACCESSED BY POLLING
CERTAIN MEMORY LOCATIONS IN THE ╔/╧ BLOCK ($─000 - $─╞╞╞) OR THROUGH
INTERRUPTS. ╘HE ┴├╔┴ MAY BE PROGRAMMED TO GENERATE INTERRUPTS IN THE
FOLLOWING SITUATIONS:
1) WHEN A BYTE OF DATA IS RECEIVED
2) WHEN A BYTE OF DATA MAY BE TRANSMITTED (I.E., THE DATA REGISTER IS EMPTY)
3) BOTH (1) AND (2)
4) NEVER
╘HE SAMPLE CODE BELOW SETS UP THE ┴├╔┴ TO GENERATE AN INTERRUPT EACH TIME A
BYTE OF DATA IS RECEIVED. ╞OR TRANSMITTING, TWO TECHNIQUES ARE SHOWN. ╘HE
FIRST TECHNIQUE CONSISTS OF AN INTERRUPT HANDLER WHICH ENABLES TRANSMIT
INTERRUPTS WHEN THERE ARE BYTES READY TO BE SENT FROM A TRANSMIT BUFFER.
╘HERE IS A SEPARATE ROUTINE GIVEN THAT MANAGES THE TRANSMIT BUFFER. ╔N THE
SECOND TECHNIQUE, WHICH CAN BE FOUND AT THE VERY END OF THE SAMPLE CODE,
NEITHER A TRANSMIT BUFFER OR TRANSMIT INTERRUPTS ARE USED. ╔NSTEAD, BYTES OF
DATA ARE SENT TO THE ┴├╔┴ DIRECTLY AS THEY ARE GENERATED BY THE TERMINAL
PROGRAM.
╬╧╘┼: ╘HE ┴├╔┴ WILL _ALWAYS_ GENERATE AN INTERRUPT WHEN A CHANGE OF STATE
OCCURS ON EITHER THE ─├─ OR ─╙╥ LINE (UNLESS THE LINES ARE NOT CONNECTED IN
THE DEVICE'S CABLE).
╘HE 6551 ┴├╔┴ WAS CHOSEN FOR SEVERAL REASONS, INCLUDING THE LOW COST AND
COMPATIBILITY WITH OTHER ├OMMODORE (═╧╙) INTEGRATED CIRCUITS. ├OMMODORE USED
THE 6551 AS A MODEL FOR THE ╦ERNAL SOFTWARE. ├ONTROL, ├OMMAND, AND ╙TATUS
REGISTERS IN THE ╦ERNAL ROUTINES PARTIALLY MIMIC THEIR HARDWARE COUNTERPARTS
IN THE ┴├╔┴.
╬╧╘┼: ╔F YOU'RE USING THE ╦ERNAL SOFTWARE REGISTERS IN YOUR PROGRAM, BE SURE
TO REVIEW THE ENCLOSED 6551 DATA SHEET CAREFULLY. ╙EVERAL OF THE HARDWARE-
REGISTER LOCATIONS DO _NOT_ PERFORM THE SAME FUNCTION AS THEIR SOFTWARE
COUNTERPARTS. ┘OU MAY NEED TO MAKE A FEW CHANGES IN YOUR PROGRAM TO
ACCOMMODATE THE DIFFERENCES.